[英]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.