【问题标题】:Why Null Value is still in the column after dropping it PySpark为什么空值在删除 PySpark 后仍在列中
【发布时间】:2020-05-19 16:54:19
【问题描述】:

我正在 Jupyter Notebook 上使用 Python PySpark,我正在尝试删除“年龄”列中的所有空值。

我尝试了这两种方法,但没有一个有效:

new_df.na.drop(subset=["Age"])
new_df.dropna()

这是我目前正在使用的代码:

import pyspark.sql.functions as f

new_df = new_df.withColumn(
  "Age",
  f.when(
    (f.col("Age") >= 0) & 
    (f.col("Age") <= 95), f.col("Age")).otherwise(f.lit(None))
)

new_df.dropna()
new_df.select('Age').distinct().show(1000, False)

我不确定我做错了什么或者没有删除空值的错误来自哪里,请告知我可以解决的问题。提前致谢

【问题讨论】:

  • new_df = new_df.dropna()

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


【解决方案1】:

将 new_df.dropna() 分配给新的参考。 dropna() 处理传入的数据帧并输出新处理的数据帧。这不是就地操作。因此,修改您的代码如下-

import pyspark.sql.functions as f

new_df = new_df.withColumn(
  "Age",
  f.when(
    (f.col("Age") >= 0) & 
    (f.col("Age") <= 95), f.col("Age")).otherwise(f.lit(None))
)

na_df = new_df.dropna()
na_df.select('Age').distinct().show(1000, False)

请注意-

na_df = new_df.dropna()

参考-https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=na#pyspark.sql.DataFrame.na

【讨论】:

  • 感谢它完美运行,感谢您提供的文档。刚开始学习 PySpark,很多东西和 Pandas 不一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 2021-11-19
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多