【问题标题】:Rolling percentage change in Python data framePython数据框中的滚动百分比变化
【发布时间】:2019-01-22 09:29:17
【问题描述】:

我有一个这样的数据框(很多行):

       Jan  Feb  Mar  Apr   May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
   a    34   24   47   30    11   57   47   44   22   33   16   39
   b    50   53   42   23    19   29   38   46   21   18   13   24  
   .    .                                                       .
   .
   .    .                                                       .

我想创建一个具有滚动 3 个月百分比变化值的新 df,因此 [1,1] 元素将是 Apr 值和 Jan 值之间的百分比变化,即 [1,2]元素将是 5 月和 2 月等之间的百分比变化......因此,对于每个值,我想要这个值和 3 个月前的值之间的百分比变化

这是我想要的示例输出(例如第一个值是 [(30-34)/34]*100 = -11.7):

      Apr     May    Jun   Jul     Aug    Sep   Oct   Nov   Dec

  a  -11.7%  -54.1%   0%   56.6%   300%    ..    ..    ..    ..      
  .   .

  .   .

我知道熊猫有.pct_change,但这并没有按照我想要的方式计算百分比。关于如何在 python 中做到这一点的任何想法? 谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    pct_changeaxis=1periods=3 一起使用:

    df.pct_change(periods=3, axis=1)
    

    输出:

       Jan  Feb  Mar       Apr       May       Jun       Jul       Aug       Sep  \
    a  NaN  NaN  NaN -0.117647 -0.541667  0.212766  0.566667  3.000000 -0.614035   
    b  NaN  NaN  NaN -0.540000 -0.641509 -0.309524  0.652174  1.421053 -0.275862   
    
            Oct       Nov       Dec  
    a -0.297872 -0.636364  0.772727  
    b -0.526316 -0.717391  0.142857  
    

    删除 NaN 列:

    df.pct_change(periods=3, axis=1).dropna(1)
    

    输出:

            Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec
    a -0.117647 -0.541667  0.212766  0.566667  3.000000 -0.614035 -0.297872 -0.636364  0.772727
    b -0.540000 -0.641509 -0.309524  0.652174  1.421053 -0.275862 -0.526316 -0.717391  0.142857
    

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      相关资源
      最近更新 更多