【发布时间】:2019-08-09 18:23:25
【问题描述】:
我想替换数据框中的空值,但仅限于符合特定条件的行。
我有这个数据框:
A|B |C |D |
1|null|null|null|
2|null|null|null|
2|null|null|null|
2|null|null|null|
5|null|null|null|
我想这样做:
A|B |C |D |
1|null|null|null|
2|x |x |x |
2|x |x |x |
2|x |x |x |
5|null|null|null|
我的情况
因此,A 列中编号为 2 的所有行都应该被替换。
A、B、C、D 列是动态的,它们的数字和名称会发生变化。
我还希望能够选择所有行,而不仅仅是替换的行。
我尝试了什么
我尝试使用 df.where 和 fillna,但它没有保留所有行。
我也想用withColumn做,但我只知道A列,其他所有的都会在每次执行时改变。
适应的解决方案:
df.select("A",
*[
when(col("A") == '2',
coalesce(col(c),
lit('0').cast(df.schema[c].dataType))
).otherwise(col(c)).alias(c)
for c in cols_to_replace
])
【问题讨论】:
标签: python-3.x apache-spark pyspark azure-databricks