📅  最后修改于: 2023-12-03 14:51:46.096000             🧑  作者: Mango
在 PySpark 中,DataFrame 表示为一个带有命名列的分布式数据集。我们可以通过 PySpark 的 API 操作 DataFrame 中的数据,包括删除列。
如果我们想从 DataFrame 中删除列,我们需要使用 PySpark 的 drop()
方法。该方法接受一个列名,将该列从 DataFrame 中删除。
但是,如果我们想要删除多个列名,我们可以使用列表推导式来构建多个 drop()
调用,并依次迭代每个列名。
以下是示例代码:
from pyspark.sql.functions import col
# 创建一个示例 DataFrame
df = spark.createDataFrame([(1, "a", "x"), (2, "b", "y"), (3, "c", "z")], ["id", "col1", "col2"])
# 要删除的列名列表
cols_to_drop = ["col1", "col2"]
# 通过迭代每个列名来删除多个列
df = df.select([col for col in df.columns if col not in cols_to_drop])
# 显示删除后的 DataFrame
df.show()
以上代码将输出以下结果:
+---+
| id|
+---+
| 1|
| 2|
| 3|
+---+
在上面的代码中,我们首先创建了一个 DataFrame,其中包括 id
、col1
和 col2
三列。然后,我们定义了要删除的列名列表,即 col1
和 col2
。
接着,我们使用一个列表推导式来迭代 DataFrame 中的每个列名,并仅选择不包括在要删除的列名列表中的列。最后,我们将新 DataFrame 赋值给原始 DataFrame,以实现多个列的删除。
总结:
如果你需要从 PySpark DataFrame 中删除列表中给出的多个列名,可以使用上面的方法构建多个 drop()
调用来迭代每个列名。这种方法可以让你轻松删除多个列,并保持代码整洁。