Pandas数据帧.滚动多索引窗口

2024-04-26 12:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

如何应用DataFrame.rolling函数并将值赋回原始数据帧?在

例如

i = pd.MultiIndex.from_product([['A','B','C'], np.arange(1, 11, 1)], names=['Name','Num'])
df = pd.DataFrame(np.random.randn(30), i, columns=['Vals'])
window = df.groupby(['Name']).rolling(3, min_periods=3)
df['Window'] = window['Vals'].apply(lambda x: x[1] + x[2])

在本例中,我希望滚动lambda用每个Name值重置,因此Window对于每个Name的前3行是NaN。但是,在末尾对DataFrame的一个新列的赋值产生了一个列,它完全是NaN

示例窗口lambda基本上工作正常,但我注意到它将分组值添加到MultiIndex中。请注意,下面有两个级别,称为Name

^{pr2}$

我是否错误地使用了这些方法,或者没有做一些必要的事情来使window.apply()与数据帧对齐?在


Tags: lambda函数namedataframedf原始数据npnan