我有一个类似索引的列,我想报告其值以获取滚动最小值。这是代码:
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)
d['min'] = d['val'].rolling(3).min()
d['ix_min'] = [np.nan, np.nan, 1, 1, 3, 3] # this is what I actually want to compute
print (d)
val first min ix_min
0 1 NaN NaN NaN
1 -2 NaN NaN NaN
2 5 1.0 -2.0 1.0
3 4 -2.0 -2.0 1.0
4 9 5.0 4.0 3.0
5 6 4.0 4.0 3.0
尝试:
d["ix_min"] = d["val"].rolling(3).apply(pd.Series.idxmin)
print(d)
打印:
ix val ix_min
0 0 1 NaN
1 1 -2 NaN
2 2 5 1.0
3 3 4 1.0
4 4 9 3.0
5 5 6 3.0