我在Pandas DataFrame中有一个时间序列,我想为其添加一个带有(未来)最小值的新列。具体来说,假设我的时间序列中具有以下值:
VAL
1
0
4
3
2
3
4
我想找到最小值“向前看”。例如,前两个值的最小值为0,然后下三个值的最小值为2(不再考虑0,因为即使它是整体最小值,也已经在过去),然后是3,最后是4。 / p>
VAL MIN
1 0
0 0
4 2
3 2
2 2
3 3
4 4
有什么想法可以有效地利用Pandas或Numpy做到这一点吗?谢谢!
答案 0 :(得分:6)
将其翻转,使用np.minimum.accumulate
,将其翻转回-
In [252]: df['MIN'] = np.minimum.accumulate(df['VAL'][::-1])[::-1]
In [253]: df
Out[253]:
VAL MIN
0 1 0
1 0 0
2 4 2
3 3 2
4 2 2
5 3 3
6 4 4
答案 1 :(得分:5)
答案 2 :(得分:3)
我们可以将expanding
与min
一起使用
df['New']=df.VAL.iloc[::-1].expanding(min_periods=1).min()