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

Calculate dataframe mean by skipping certain values in Python / Pandas

我需要计算数据框第一列的平均值,我可以使用 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 是一个布尔值,指定是否排除 NA/null 值,而不是忽略哪些值:

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

假设我明白你想做什么,你可以用 NaN 替换 -9999:

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

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

读取您的数据时,规范化并将 -9999 替换为 n/a。