【问题标题】:Pyspark How to update all null values from all column in a dataframe?Pyspark如何更新数据框中所有列的所有空值?
【发布时间】:2020-11-05 10:23:36
【问题描述】:

我在 DF 下的某些列中有空值。

现在我需要用 'NA' 更新/替换那些 'null' 值

+-------+------+-----+------+----+
|Product|Canada|China|Mexico| USA|
+-------+------+-----+------+----+
| Orange|  null| 4000|  null|4000|
|  Beans|  null| 1500|  2000|1600|
| Banana|  2000|  400|  null|1000|
|Carrots|  2000| 1200|  null|1500|
+-------+------+-----+------+----+

我找到了'fillna'方法来替换空值

但是我需要更新/替换所有具有空值的列

所以像这样或更好的方法

replaced = df.fillna({str(col):'NA', col for col in df.columns})

感谢任何帮助以获取正确的方法

谢谢

【问题讨论】:

  • 这些列的数据类型是什么(除了产品)?可以添加架构吗?

标签: apache-spark pyspark apache-spark-sql pyspark-dataframes


【解决方案1】:

您需要使用 subset() 并传递列名以填充 Null 值

df = df.fillna(0, subset=['Canada', 'China', 'Mexico', 'USA'])

或者,如果您想对所有列使用 fillna() ,请将它们传递给 dictionary ,您也可以指定您的选择:)

df = df.fillna({'Canada':'4', 'China': '5', 'Mexico' : '6', 'USA': '7})

或者,您可以简单地使用下面来用空值填充所有列

df = df.fillna("a_value")

【讨论】:

  • 嗨@dsk..我尝试了你建议的所有方式,但没有一个按预期提供输出..它仍然以空值重新调整
  • 你可以尝试转换为StringType并用na填充。并检查
  • 请告诉我我应该在哪里转换为字符串...
  • df = df.withColumn("Canada", F.col(Canada).cast(T.StringType())) - 试试这个
猜你喜欢
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多