Pandas 滚动最小值,其他列的对应值

问题描述 投票: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).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
python pandas dataframe rolling-computation
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.