我的代码看起来像这样
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
中的滚动窗口获取第一个和最后一个值吗?
发生这种情况是因为您正在尝试访问尚未使用 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)