如何使用python对两列进行分组、求和,并使用其中一列进行排序,以获得每个组中n个最高值

如何使用python对两列进行分组、求和,并使用其中一列进行排序,以获得每个组中n个最高值,python,sorting,pandas-groupby,Python,Sorting,Pandas Groupby,我有一个数据框,我试图按名称和目的地列进行分组,并计算特定名称的目的地销售额之和,然后得到每个名称的前2名 data= Name Origin Destination Sales John Italy China 2 Dan UK China 3 Dan UK India 2 Sam UK India 5 Sam Italy Malaysia 1 J

我有一个数据框,我试图按名称和目的地列进行分组,并计算特定名称的目的地销售额之和,然后得到每个名称的前2名

data=
Name    Origin  Destination Sales
John    Italy   China        2
Dan     UK      China        3
Dan     UK      India        2
Sam     UK      India        5
Sam     Italy   Malaysia     1
John    Italy   Malaysia     1
Dan     France  India        4
Dan     Italy   China        2
Sam     Italy   Malaysia     2
John    France  Malaysia     1
Sam     Italy   China        2
Dan     UK      Malaysia     4
Dan     France  India        2
John    France  Malaysia     4
John    Italy   China        4
John    UK      Malaysia     1
Sam     UK      China        4
Sam     France  China        5
我尝试过这样做,但我一直按照目的地而不是销售额来排序。下面是我试过的代码

data.groupby(['Name','Destination'])['Sales'].sum().groupby(level=0).head(2).重置索引(Name='Total'Sales')
此代码为我提供了以下数据帧:

Name    Destination Total_Sales
Dan        China       5
Dan        India       8
John       China       6
John       Malaysia    7
Sam        China       11
Sam        India       5
但是它在错误的列(目的地)上排序,但是我想按销售额的总和(总销售额)排序

我希望达到的预期结果是:

Name    Destination Total_Sales
Dan        India       8
Dan        China       5
John       Malaysia    7
John       China       6
Sam        China       11
Sam        India       5
您的代码:

grouped_df = data.groupby(['Name', 'Destination'])['Sales'].sum().groupby(level=0).head(2).reset_index(name='Total_Sales')
要对结果进行排序,请执行以下操作:

sorted_df = grouped_df.sort_values(by=['Name','Total_Sales'], ascending=(True,False))

print(sorted_df)
输出:

   Name Destination  Total_Sales
1   Dan       India            8
0   Dan       China            5
3  John    Malaysia            7
2  John       China            6
4   Sam       China           11
5   Sam       India            5

谢谢你的回答,丹。这是因为巧合的是,按目的地排列的前2名(按字母顺序排列)也是按总销售额排列的前2名。在前2名销售人员不在前2名目的地(按字母顺序)的情况下,如何提取他们?