我是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的语法
答案 0 :(得分:0)
看起来您有一个rdd
,而不是DataFrame。您可以轻松convert the rdd
to a 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()