熊猫:根据另一列的值将列拆分为较小的列

时间:2018-06-11 16:54:49

标签: python pandas dataframe

我有以下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'列值并相应地重命名它们。

如何实现这一目标?

1 个答案:

答案 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解决方案同样适用