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

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

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

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

最佳答案

skipna arg 是一个 bool 值,指定是否排除 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

关于python - 通过跳过 Python/Pandas 中的某些值来计算数据帧平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28180894/

10-12 18:51