Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算pyspark rdd中包含缺失值的列的平均值和中值_Python_Numpy_Lambda_Pyspark - Fatal编程技术网

Python 计算pyspark rdd中包含缺失值的列的平均值和中值

Python 计算pyspark rdd中包含缺失值的列的平均值和中值,python,numpy,lambda,pyspark,Python,Numpy,Lambda,Pyspark,我正在使用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))

我正在使用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))
但这种方法并没有真正起作用

最终使用以下方法解决了此问题:

我使用了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值