PySpark Dataframe的最佳实践-删除多列?

时间:2019-11-21 16:36:24

标签: python dataframe apache-spark pyspark

比方说,我们想从数据框中删除一列。无需创建新的数据框就能做到吗?

df = df.drop("tags_s")

创建一个新的数据框似乎更安全,更正确,对吗?重新使用上述数据框可能会遇到什么问题?

如果重复使用数据框是一种不好的做法,则可以说要删除与模式匹配的几列:

for col in df.columns:
  if col.startswith("aux_"):
    df = df.drop(col)

在这种情况下,每次创建一个新的数据框似乎都是不切实际的。 最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

如果要删除多个列,我想说的第一步是识别列,将其保存在列表中,然后执行一个.drop,例如:

your_column_list = [col for col in df.columns if col.startswith("aux") ]
df.drop(*your_column_list)

答案 1 :(得分:0)

根据我对Spark数据框的理解,您不必担心它每次都会返回新的数据框,而您所做的只是在数据框上进行了转换。您可以对数据框执行许多转换,只有在对数据框执行任何操作时才产生新的数据框。

有关转化与操作的更多信息, https://spark.apache.org/docs/latest/rdd-programming-guide.html#basics