熊猫计算行的百分比增长

时间:2020-12-29 12:59:40

标签: python pandas

我创建了以下 Pandas 数据框并尝试计算 Col2 中给出的年份之间的增长百分比:

<头>
Col1 Col2 一月 二月 先生 总计
A 2019 100 200 300 600
A 2020 200 300 400 900
B 2019 10 20 30 60
B 2020 20 30 40 90
C 2019 1000 2000 3000 6000
C 2020 2000 3000 4000 9000

包含结果的表格应如下所示(见最后 3 行):

<头>
Col1 Col2 一月 二月 先生 总计
A 2019 100 200 300 600
A 2020 200 300 400 900
B 2019 10 20 30 60
B 2020 20 30 40 90
C 2019 1000 2000 3000 6000
C 2020 2000 3000 4000 9000
A GrowthInPercent 100 50 33 50
B GrowthInPercent 100 50 33 50
C GrowthInPercent 100 50 33 50

有没有办法使用 pandas 函数计算 GrowthInPercent 值?

我不明白;-(

1 个答案:

答案 0 :(得分:2)

您可以将 pct_changegroupby 一起使用

u = (df[['Col1']].join(df.drop("Col2",1).groupby('Col1').pct_change()
     .mul(100).round())
     .dropna().assign(Col2="Growth%"))

out = df.append(u,ignore_index=True)

print(out)

  Col1     Col2     Feb     Jan     Mrz   Total
0    A     2019   200.0   100.0   300.0   600.0
1    A     2020   300.0   200.0   400.0   900.0
2    B     2019    20.0    10.0    30.0    60.0
3    B     2020    30.0    20.0    40.0    90.0
4    C     2019  2000.0  1000.0  3000.0  6000.0
5    C     2020  3000.0  2000.0  4000.0  9000.0
6    A  Growth%    50.0   100.0    33.0    50.0
7    B  Growth%    50.0   100.0    33.0    50.0
8    C  Growth%    50.0   100.0    33.0    50.0

注意 - 这是假设数据按 Col1Col2 排序,如果不是,您可以先使用 df = df.sort_values(by=['Col1','Col2']) 对数据进行排序.

相关问题