我正在使用PySpark。 rdd具有一个具有浮点值的列,其中一些行丢失。缺少的行只是空字符串''。
现在,我想在空字符串的位置写出列的平均值和中值,但是如何计算平均值呢?
由于rdd.mean()函数不适用于包含空字符串的浮点数。
import numpy as np
def replaceEmpty(x):
if x=='':
x = np.nan
return x
def fillNA(x):
mu = np.nanmean(np.array(x))
if x==np.nan:
x = mu
return x
data = data.map(lambda x: replaceEmpty(x))
data = data.map(lambda x: fillNA(x))
但这种方法并没有真正起作用!
答案 0 :(得分:0)
最终解决了它: Fill Pyspark dataframe column null values with average value from same column
我使用sqlContext而不是SparkContext。以前,我在使用:
data = sc.textFile('all_data_col5.txt')
我把它改为:
data = sqlContext.read.format('com.databricks.spark.csv').options(header=True, inferSchema=False).schema(df_schema).load('all_data_col5.csv')
因为,sqlContext似乎有更多的功能来处理NA值。