【发布时间】:2013-10-31 16:06:05
【问题描述】:
我有一个名为 dF 的数据框:
Twa_mean
Date_Time
2007-01-01 07:00:00 6.5
2007-01-01 07:10:00 6.4
2007-01-01 07:20:00 6.4
2007-01-01 07:30:00 NaN
2007-01-01 07:40:00 NaN
2007-01-01 07:50:00 NaN
我试图获得滚动平均值(window=2),但没有考虑 NaN,所以我使用 scipy.stats 的 nanmean 函数:
import scipy.stats as st
f=lambda x: st.nanmean(x)
d=pd.rolling_apply(dF,2,f)
但是,我得到了这个:
Twa_mean
Date_Time
2007-01-01 07:00:00 NaN
2007-01-01 07:10:00 6.45
2007-01-01 07:20:00 6.40
2007-01-01 07:30:00 NaN
2007-01-01 07:40:00 NaN
2007-01-01 07:50:00 NaN
这就像 st.nanmean 没有忽略 NaN,发生了什么?
我希望这样:
Twa_mean
Date_Time
2007-01-01 07:00:00 NaN
2007-01-01 07:10:00 6.45
2007-01-01 07:20:00 6.40
2007-01-01 07:30:00 6.40
2007-01-01 07:40:00 NaN
2007-01-01 07:50:00 NaN
【问题讨论】:
-
您的预期输出是什么?这是我期望的输出。也许你想删除所有的 NaN?在这种情况下使用
.dropna()。 -
有什么理由不使用熊猫的滚动平均值?
pd.rolling_mean(df, 2)? -
哦,经过您的修改,我明白了。这也是我所期望的。
-
我没有使用它,因为这样的函数,只要有一个 NaN,平均值就等于 NaN,我想计算平均值,即使有一些 NaN。