Python数据帧中的滚动百分比变化

Python数据帧中的滚动百分比变化,python,pandas,Python,Pandas,我有这样一个数据帧(许多行): 我想用滚动3个月的百分比变化值创建一个新的df,[1,1]元素将是Apr值和一月值之间的百分比变化,[1,2]元素将是五月和二月之间的百分比变化,等等。。。因此,对于每个值,我希望该值与3个月前的值之间的百分比变化 这是我想要的示例输出(例如,第一个值为 [(30-34)/34]*100=-11.7): 我知道熊猫有.pct\u变化,但这并没有按照我想要的方式计算百分比。关于如何用python实现这一点,有什么想法吗? 谢谢与axis=1和periods=3一起使

我有这样一个数据帧(许多行):

我想用滚动3个月的百分比变化值创建一个新的df,[1,1]元素将是Apr值和一月值之间的百分比变化,[1,2]元素将是五月和二月之间的百分比变化,等等。。。因此,对于每个值,我希望该值与3个月前的值之间的百分比变化

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

我知道熊猫有
.pct\u变化
,但这并没有按照我想要的方式计算百分比。关于如何用python实现这一点,有什么想法吗? 谢谢

axis=1
periods=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  
        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
删除NaN列:

df.pct_change(periods=3, axis=1).dropna(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  
        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