如何在 pandas 中聚合总和并将唯一行值转换为列名称?

我对 pandas 功能有疑问pd.groupby()。我有数据框


data = [{'Shop': 'Venga', 'Item Name': 'Oranges', 'Measure':'Supply Cost', 'Value': '10'},

        {'Shop': 'Venga', 'Item Name': 'Oranges', 'Measure':'Product Cost', 'Value': '20'},

        {'Shop': 'Venga', 'Item Name': 'Apples', 'Measure':'Supply Cost', 'Value': '5'},

        {'Shop': 'Venga', 'Item Name': 'Apples', 'Measure':'Product Cost', 'Value': '60'},

        {'Shop': 'Mesto', 'Item Name': 'Oranges', 'Measure':'Supply Cost', 'Value': '15'},

        {'Shop': 'Mesto', 'Item Name': 'Oranges', 'Measure':'Product Cost', 'Value': '10'},

        {'Shop': 'Mesto', 'Item Name': 'Apples', 'Measure':'Supply Cost', 'Value': '80'},

        {'Shop': 'Mesto', 'Item Name': 'Apples', 'Measure':'Product Cost', 'Value': '5'},

       ]

https://img2.mukewang.com/651f77b30001980902020159.jpg

我想将我的类别移至Measure列并使其看起来像这样:

https://img3.mukewang.com/651f77bf0001f8d502360086.jpg

我尝试过跑步,data.groupby(['Measure'], axis = 1).sum()但对我来说根本不起作用。



慕运维8079593
浏览 85回答 1
1回答

长风秋雁

.groupby然后使用.unstack正确的级别。在本例中,level=2是'Measure'来自.groupby对象的列。.reset_index删除多级索引。import pandas as pddfg = df.groupby(['Shop', 'Item Name', 'Measure'])['Value'].sum().unstack(level=2).reset_index()dfg.columns.name = None# display(dfg)    Shop Item Name Product Cost Supply Cost0  Mesto    Apples            5          801  Mesto   Oranges           10          152  Venga    Apples           60           53  Venga   Oranges           20          10
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python