熊猫滚动 - 窗口中的第一个值

问题描述 投票:0回答:1

我的代码看起来像这样

d = pd.DataFrame.from_dict({'ix':[0,1,2,3,4,5], 'val': [1,-2,5,4,9,6]})
d['first'] = d['val'].rolling(3).agg(lambda rows: rows[0])

根据此处的建议在滚动窗口中获取第一个和最后一个值,但我收到以下错误:

ValueError: 0 is not in range

知道如何从

pandas
中的滚动窗口获取第一个和最后一个值吗?

python pandas dataframe rolling-computation
1个回答
0
投票

发生这种情况是因为您正在尝试访问尚未使用 agg 完全形成的系列元素。

对于这种情况,我建议使用 apply,因为它在这种情况下更加灵活,您可以在下面查看我的建议代码。

d = pd.DataFrame.from_dict({'ix':[0,1,2,3,4,5], 'val': [1,-2,5,4,9,6]})
d['first'] = d['val'].rolling(3).apply(lambda x: x.iloc[0] if not x.empty else None)
© www.soinside.com 2019 - 2024. All rights reserved.