繁体   English   中英

计算按另一列分组的多对列之间的变化百分比

[英]Calculate percentage of change between multiple pairs of columns grouped by another column

我有以下数据框:

VAR1   OCT20 NOV20 DEC20 JAN21 ...
x      1     1.6   2.4   3.3
y      2.1   1     0.7   5.4
z      2     3.1   0.5   2.1

我想计算的是,VAR1 列中的每一行,每个月之间的变化百分比(与其前一个月相比,不是所有可能的对)。 因此,例如对于x: pct_change在 OCT20 和x: pct_change之间,然后是 NOV20 和 DEC20 等。然后对于y

有关如何执行此操作的任何帮助?

import pandas as pd

data = [['VAR1','OCT20', 'NOV20', 'DEC20','JAN21'],
['x',1,1.6,2.4,3.3],
['y',2.1,1,0.7,5.4],
['z',2,3.1,0.5,2.1]]

df = pd.DataFrame(data[1:], columns=data[0])
df = df.T.iloc[1:]

print(df.pct_change())

设置索引并使用 pct_change

df.set_index('VAR1').pct_change(axis=1)

      OCT20    NOV20    DEC20     JAN21
VAR1                                   
x       NaN  0.60000  0.50000  0.375000
y       NaN -0.52381 -0.30000  6.714286
z       NaN  0.55000 -0.83871  3.200000

在这里你可以使用 shift

df_per = (df-df.shift(axis=1))/df.shift(axis=1)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM