我有以下Pandas数据帧:
import pandas
df = pandas.DataFrame({'Status': ['Draft',
'Active','Completed','Completed', 'Draft', 'Active'], 'Region':
['Europe','Europe', 'Asia','Australia', 'Asia', 'Australia'],'Budget': [1000,
2000,3000,4000,5000,6000]})
我正在按如下方式对其进行分组和汇总:
grouped_by_region = df.groupby('Region').agg({'Budget':sum})
所以print(grouped_by_region)
的输出是:
Region Budget
Asia 8000
Australia 10000
Europe 3000
我想要做的是将预算列拆分为"预算草稿","预算有效","预算已完成"列。所以基本上我需要创建基于' Status'列值并相应地重命名它们。
如何实现这一目标?
答案 0 :(得分:0)
IIUC,您只需将Status
添加到您的groupby并取消堆叠:
df.groupby(['Region', 'Status']).agg({'Budget':sum}).unstack(fill_value=0)
Budget
Status Active Completed Draft
Region
Asia 0 3000 5000
Australia 6000 4000 0
Europe 2000 0 1000
虽然评论中提出的pivot
解决方案同样适用