考虑一个由“null”元素和数字元素组成的 pyspark 数据框。通常,数字元素具有不同的值。如何用常量数值(例如值 1)替换数据帧的所有数值?提前致谢!
pyspark 数据框的示例:
结果应该是:
考虑一个由“null”元素和数字元素组成的 pyspark 数据框。通常,数字元素具有不同的值。如何用常量数值(例如值 1)替换数据帧的所有数值?提前致谢!
pyspark 数据框的示例:
结果应该是:
根据您的问题,我认为使用lit可能更容易。试试这个-
from pyspark.sql.functions import lit
new_df = df.withColumn('column_name', lit(1))
希望能帮助到你!
使用lit
会将列的所有值转换为给定值。
要仅对数据框的非空值执行此操作,您必须过滤每列的非空值并替换您的值。when
可以帮助您实现这一目标。
from pyspark.sql.functions import when
df.withColumn('c1', when(df.c1.isNotNull(), 1))
.withColumn('c2', when(df.c2.isNotNull(), 1))
.withColumn('c3', when(df.c3.isNotNull(), 1))
这将导致:
此外,如果您也想用其他值替换这些空值,您可以otherwise
结合使用when
. 假设您想在0
那里进行估算:
from pyspark.sql.functions import when
df.withColumn('c1', when(df.c1.isNotNull(), 1).otherwise(0))
.withColumn('c2', when(df.c2.isNotNull(), 1).otherwise(0))
.withColumn('c3', when(df.c3.isNotNull(), 1).otherwise(0))
这将导致:
如果您有多个列,这会更容易:
from pyspark.sql.functions import when
cols = df.columns # list of all columns
for col in cols:
df= df.withColumn(col, when(df[col]>0,1).otherwise(0))