如何通过滚动平均值/中间值来删除缺失值?即,在计算平均值/中位数之前,输出应删除缺失值,而不是在缺失值存在时给我NaN。你知道吗
import pandas as pd
t = pd.DataFrame(data={v.date:[0,0,0,0,1,1,1,1,2,2,2,2],
'i0':[0,1,2,3,0,1,2,3,0,1,2,3],
'i1':['A']*12,
'x':[10.,20.,30.,np.nan,np.nan,21.,np.nan,41.,np.nan,np.nan,32.,42.]})
t.set_index([v.date,'i0','i1'], inplace=True)
t.sort_index(inplace=True)
print(t)
print(t.groupby('date').apply(lambda x: x.rolling(window=2).mean()))
给予
x
date i0 i1
0 0 A 10.0
1 A 20.0
2 A 30.0
3 A NaN
1 0 A NaN
1 A 21.0
2 A NaN
3 A 41.0
2 0 A NaN
1 A NaN
2 A 32.0
3 A 42.0
x
date i0 i1
0 0 A NaN
1 A 15.0
2 A 25.0
3 A NaN
1 0 A NaN
1 A NaN
2 A NaN
3 A NaN
2 0 A NaN
1 A NaN
2 A NaN
3 A 37.0
在这个例子中,我想要以下内容:
x
date i0 i1
0 0 A 10.0
1 A 15.0
2 A 25.0
3 A 30.0
1 0 A NaN
1 A 21.0
2 A 21.0
3 A 41.0
2 0 A NaN
1 A NaN
2 A 32.0
3 A 37.0
我试过的
t.groupby('date').apply(lambda x: x.rolling(window=2).dropna().median())
以及
t.groupby('date').apply(lambda x: x.rolling(window=2).median(dropna=True))
(两者都提出了例外,但可能存在类似的情况)
谢谢你的帮助!你知道吗
你在找
min_periods
?请注意,您不需要apply
,请直接调用GroupBy.Rolling
:相关问题 更多 >
编程相关推荐