假设我有一个这样的表:
CustomerID | Customer Name | Category | Price
A1 Name1 Cat1 10
A2 Name2 Cat2 20
B1 Name3 Cat1 40
A1 Name1 Cat2 50
A2 Name2 Cat2 5
我想根据每个客户的CustomerID和价格总和对此数据框进行分组和排序,因为每个组将按类别进行分组和排序,如下所示:
CustomerID | Customer Name | Category | Price |
A1 Name1 Cat2 50
Cat1 10
B1 Name2 Cat1 40
A2 Name2 Cat2 25
df.groupby(["Customer ID", "Customer Name", "Category"]).apply(lambda x: x['PRICE'].sum()).reset_index(name="Sum").sort_values(by="Customer ID",ascending=False)
我写的这段代码不起作用。
答案 0 :(得分:1)
您应该能够简单地使用sum()
方法而不是使用lambda函数 -
df.groupby(["Customer ID", "Customer Name", "Category"]).sum().reset_index().sort_values(by="Customer ID",ascending=False)
此外,每次执行一个操作的每个步骤并确保您的结果是您所期望的是解决此问题的好方法。