【问题标题】:How to calculate cumulative percent change by each group?如何计算每组的累积百分比变化?
【发布时间】:2021-10-15 05:48:07
【问题描述】:

我想创建一个新列来计算每组的累积百分比变化

样本数据集:

import pandas as pd
  
df = pd.DataFrame({'Group':['A', 'A', 'A', 'B', 'B'],
                     'Col_1':[100, 200, 300, 400, 500],
                     'Col_2':[55, 66, 77, 88, 99]})

方法:见下面的例子

| Group |Col_1 | Col_2  |  Cumulative Percent Change            |
|-------|------|--------|---------------------------------------|
|    A  | 100  |  55    | 1                                     |
|    A  | 200  |  66    |(66-55)/55 + 1                         |
|    A  | 300  |  77    |((77-66)/66) + ((66-55)/55 + 1)        |
|    B  | 400  |  88    |  1                                    |
|    B  | 500  |  99    |((99-88)/88) + 1                       |

【问题讨论】:

    标签: pandas dataframe group-by


    【解决方案1】:

    您需要groupby 两次,一次用于计算百分比变化(使用pct_change),一次用于累计总和+1(cumsumadd(1)):

    df['CPC'] = (df.groupby('Group')['Col_2']
                   .pct_change()
                   .fillna(0)
                   .groupby(df['Group'])
                   .cumsum().add(1)
                )
    

    输出:

      Group  Col_1  Col_2       CPC
    0     A    100     55  1.000000
    1     A    200     66  1.200000
    2     A    300     77  1.366667
    3     B    400     88  1.000000
    4     B    500     99  1.125000
    

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 2020-12-23
      • 2021-08-21
      • 2017-11-12
      • 2019-01-09
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多