Python 尝试与熊猫一起分组和订购
假设我有一张这样的桌子:Python 尝试与熊猫一起分组和订购,python,pandas,Python,Pandas,假设我有一张这样的桌子: CustomerID | Customer Name | Category | Price A1 Name1 Cat1 10 A2 Name2 Cat2 20 B1 Name3 Cat1 40 A1 Name1 Cat2 50 A2 Name2
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 | 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)
我想根据CustomerID和每个客户的价格总和对这个数据框进行分组和排序,因为每个组将按类别进行分组和排序,如下所示:
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 | 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)
我写的这段代码不起作用。您应该能够简单地使用
sum()
方法,而不是使用lambda函数-
df.groupby(["Customer ID", "Customer Name", "Category"]).sum().reset_index().sort_values(by="Customer ID",ascending=False)
此外,每次只执行一个操作步骤,并确保结果符合预期,这是解决此类问题的好方法。您是否也可以将数据以文本形式显示?你的错误信息是什么?您的文本中也有输入错误
CustomerID
和CustomerID
如何将数据以文本形式输入?Customer ID是正确的。df.groupby([“CustomerID”、“CustomerName”、“Category”],as_index=False)。Price.sum()我认为如果您只使用lambda x:x.sum()
,lambda函数会起作用,但@doktakay的方法是可行的。