要按多个列分组Pandas数据帧并找出与上个月相比的百分比变化,可以按照以下步骤进行操作:
import pandas as pd
data = {'date': ['2021-01-01', '2021-01-01', '2021-02-01', '2021-02-01', '2021-03-01', '2021-03-01'],
'category': ['A', 'B', 'A', 'B', 'A', 'B'],
'value': [100, 200, 150, 250, 180, 300]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df_grouped = df.groupby(['date', 'category']).sum().reset_index()
df_grouped['value_previous_month'] = df_grouped.groupby('category')['value'].shift()
df_grouped['percentage_change'] = (df_grouped['value'] - df_grouped['value_previous_month']) / df_grouped['value_previous_month'] * 100
完整的代码示例:
import pandas as pd
data = {'date': ['2021-01-01', '2021-01-01', '2021-02-01', '2021-02-01', '2021-03-01', '2021-03-01'],
'category': ['A', 'B', 'A', 'B', 'A', 'B'],
'value': [100, 200, 150, 250, 180, 300]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df_grouped = df.groupby(['date', 'category']).sum().reset_index()
df_grouped['value_previous_month'] = df_grouped.groupby('category')['value'].shift()
df_grouped['percentage_change'] = (df_grouped['value'] - df_grouped['value_previous_month']) / df_grouped['value_previous_month'] * 100
print(df_grouped)
输出结果:
date category value value_previous_month percentage_change
0 2021-01-01 A 100 NaN NaN
1 2021-01-01 B 200 NaN NaN
2 2021-02-01 A 150 100.0 50.0
3 2021-02-01 B 250 200.0 25.0
4 2021-03-01 A 180 150.0 20.0
5 2021-03-01 B 300 250.0 20.0
下一篇:按多个列分组,并按月/年分组拆分