📜  如何从 PySpark DataFrame 中删除列表中给出的多个列名?(1)

📅  最后修改于: 2023-12-03 14:51:46.096000             🧑  作者: Mango

如何从 PySpark DataFrame 中删除列表中给出的多个列名?

在 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,其中包括 idcol1col2 三列。然后,我们定义了要删除的列名列表,即 col1col2

接着,我们使用一个列表推导式来迭代 DataFrame 中的每个列名,并仅选择不包括在要删除的列名列表中的列。最后,我们将新 DataFrame 赋值给原始 DataFrame,以实现多个列的删除。

总结:

如果你需要从 PySpark DataFrame 中删除列表中给出的多个列名,可以使用上面的方法构建多个 drop() 调用来迭代每个列名。这种方法可以让你轻松删除多个列,并保持代码整洁。