Pyspark 从数据框中的列中删除空值

新手上路,请多包涵

我的数据框如下所示

ID,FirstName,LastName

1,Navee,Srikanth

2,,Srikanth

3,Naveen,

现在我的问题陈述是我必须删除行号 2,因为名字为空。

我正在使用下面的 pyspark 脚本

join_Df1= Name.filter(Name.col(FirstName).isnotnull()).show()

我收到错误信息

  File "D:\0\NameValidation.py", line 13, in <module>
join_Df1= filter(Name.FirstName.isnotnull()).show()

类型错误:“列”对象不可调用

谁能帮我解决这个问题

原文由 Naveen Srikanth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 446
2 个回答

看起来您的 DataFrame FirstName 有空值 Null 。以下是一些可供尝试的选项:-

 df = sqlContext.createDataFrame([[1,'Navee','Srikanth'], [2,'','Srikanth'] , [3,'Naveen','']], ['ID','FirstName','LastName'])
df.show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName.isNotNull()).show() #This doen't remove null because df have empty value
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.filter(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where("FirstName != ''").show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

原文由 Rakesh Kumar 发布,翻译遵循 CC BY-SA 3.0 许可协议

你应该做如下

join_Df1.filter(join_Df1.FirstName.isNotNull()).show

希望这可以帮助!

原文由 koiralo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题