未来的最小熊猫数据框

时间:2019-08-14 16:16:46

标签: python pandas numpy minimum

我在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做到这一点吗?谢谢!

3 个答案:

答案 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)

使用cummin

df['MIN'] = df.VAL[::-1].cummin()[::-1]

    VAL  MIN
0    1    0
1    0    0
2    4    2
3    3    2
4    2    2
5    3    3
6    4    4

答案 2 :(得分:3)

我们可以将expandingmin一起使用

df['New']=df.VAL.iloc[::-1].expanding(min_periods=1).min()