我需要计算数据帧第一列的平均值,我可以使用mean()
方法完成。
问题:有时,数据中有-9999个值表示缺少观察值。
我知道在计算Pandas中的平均值时会固有地跳过NaN值,但当然不是-9999值的情况。
这是我试过的代码。它计算列的平均值,但是将-9999值计算到计算中:
df=pandas.DataFrame([{2,4,6},{1,-9999,3}])
df[0].mean(skipna=-9999)
但它产生的平均值为-4998.5,显然是将-9999计算出来的。
答案 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。