Python 熊猫:基于另一列将列拆分为较小的列';s值
我有以下数据帧:Python 熊猫:基于另一列将列拆分为较小的列';s值,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: 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]}) 我
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(按区域分组)
的输出为:
Region Budget
Asia 8000
Australia 10000
Europe 3000
我要做的是将预算列拆分为“预算草案”、“预算活动”、“预算完成”列。因此,基本上我需要创建基于“Status”列值的新列,并相应地重命名它们
如何实现这一点?IIUC,您只需将
状态添加到您的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
解决方案在这种情况下同样有效,df.pivot\u表('Budget'、'Region'、'Status',np.sum)
请参见问题4的答案