我在 spark 中有一个非常宽的数据框。它有 80 列,所以我想将一列设置为 0,其余的设置为 1。
所以我想设置为 1 的那个我试过了
df = df.withColumn("set_zero_column", lit(0))
它奏效了。
现在我想将其余列设置为 1,如果不指定所有 79 个名称怎么办?
感谢任何帮助
最佳答案
使用带有列表理解的select
:
from pyspark.sql.functions import lit
set_one_columns = [lit(1).alias(c) for c in df.columns if c != "set_zero_column"]
df = df.select(lit(0).alias("set_zero_column"), *set_one_columns)
如果你需要保持原来的列顺序,你可以这样做:
cols = [lit(0).alias(c) if c == "set_zero_column" else lit(1).alias(c) for c in df.columns]
df = df.select(*cols)
关于apache-spark - 如何在不指定所有列名的情况下将多个列值更改为常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203123/