通过跳过Python / Pandas中的某些值来计算数据帧平均值

时间:2015-01-27 22:02:56

标签: python pandas nan mean

我需要计算数据帧第一列的平均值,我可以使用mean()方法完成。 问题:有时,数据中有-9999个值表示缺少观察值。 我知道在计算Pandas中的平均值时会固有地跳过NaN值,但当然不是-9999值的情况。

这是我试过的代码。它计算列的平均值,但是将-9999值计算到计算中:

df=pandas.DataFrame([{2,4,6},{1,-9999,3}])
df[0].mean(skipna=-9999)

但它产生的平均值为-4998.5,显然是将-9999计算出来的。

2 个答案:

答案 0 :(得分:3)

skipna arg是一个布尔值,指定是否排除NA / null值,而不是要忽略哪些值:

skipna : boolean, default True
    Exclude NA/null values. If an entire row/column is NA, the result
    will be NA

假设我了解您要执行的操作,可以将-9999替换为NaN

In [41]: df[0].replace(-9999, np.nan)
Out[41]: 
0     2
1   NaN
Name: 0, dtype: float64

In [42]: df[0].replace(-9999, np.nan).mean()
Out[42]: 2.0

答案 1 :(得分:1)

skipna意思是真或假,而不是要跳过的值。

读取数据时,使用n / a标准化和替换-9999。