Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试与熊猫一起分组和订购_Python_Pandas - Fatal编程技术网

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的方法是可行的。