簡體   English   中英

如何使用PySpark清理rdd或DataFrame(刪除null和重復項)

[英]How to clean rdd or DataFrame with PySpark (drop nulls and duplicates)

我是Python / PySpark的新手,在Mac終端上使用數據之前,我在清理數據時遇到了麻煩。 我想刪除任何包含空值或重復行的行。 我使用.distinct()並嘗試:

rw_data3 = rw_data.filter(rw_data.isNotNull())

我也嘗試過...

from functools import reduce
rw_data.filter(~reduce(lambda x, y: x & y, [rw_data[c].isNull() for c in 
rw_data.columns])).show()

但我明白了

"AttributeError: 'RDD' object has no attribute 'isNotNull'"

要么

"AttributeError: 'RDD' object has no attribute 'columns'"

這清楚表明我不太了解清理DataFrame的語法

看起來您有rdd ,而不是DataFrame。 您可以輕松地rdd轉換為DataFrame ,然后使用pyspark.sql.DataFrame.dropna()pyspark.sql.DataFrame.dropDuplicates()進行“清理”。

clean_df = rw_data3.toDF().dropna().dropDuplicates()

這兩個函數都接受和可選的參數subset ,您可以使用它們來指定列的子集以搜索null和重復項。


如果您想將數據作為rdd “清除”,則可以如下使用filter()distinct()

clean_rdd = rw_data2.filter(lambda row: all(x is not None for x in row)).distinct()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM