【问题标题】:Future minimum pandas dataframe未来的最小熊猫数据框
【发布时间】:2019-12-21 05:39:43
【问题描述】:

我在 Pandas DataFrame 中有一个时间序列,我想为其添加一个具有(未来)最小值的新列。具体来说,假设我的时间序列中有以下值:

 VAL
 1 
 0 
 4 
 3 
 2 
 3 
 4 

我想找到“向前看”的最小值。例如,前 2 个值的最小值是 0,接下来的三个值是 2(不再考虑 0,因为即使它是整体最小值,它也已经过去了),然后是 3,最后是 4。

 VAL   MIN
 1     0
 0     0
 4     2
 3     2
 2     2
 3     3
 4     4

任何想法如何使用 Pandas 或 Numpy 有效地做到这一点?谢谢!

【问题讨论】:

    标签: python pandas numpy minimum


    【解决方案1】:

    翻转它,使用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
    

    【讨论】:

      【解决方案2】:

      使用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
      

      【讨论】:

        【解决方案3】:

        我们可以使用expandingmin

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

        【讨论】:

          猜你喜欢
          • 2014-06-27
          • 2017-07-25
          • 2021-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-08
          相关资源
          最近更新 更多