为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2023-10-06 10:56:47
我对 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'},       ]我想将我的类别移至Measure列并使其看起来像这样:我尝试过跑步,data.groupby(['Measure'], axis = 1).sum()但对我来说根本不起作用。
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

  • .groupby然后使用.unstack正确的级别。

    • 在本例中,level=2'Measure'来自.groupby对象的列。

  • .reset_index删除多级索引。

import pandas as pd


dfg = 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 Cost

0  Mesto    Apples            5          80

1  Mesto   Oranges           10          15

2  Venga    Apples           60           5

3  Venga   Oranges           20          10


查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 50 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信