Pandas Groupby 在组内排序

Pandas Groupby 在组内排序

Pandas Groupby用于我们想把数据和集合分割成组的情况,这样我们就可以对这些组进行各种操作,如:数据的聚合,通过一些组的计算进行转换,或根据应用于组的特定条件进行过滤。

以类似的方式,我们可以在这些组内进行排序。

例子1:让我们以一个DataFrame为例。

df = pd.DataFrame({'X': ['B', 'B', 'A', 'A'],
                   'Y': [1, 2, 3, 4]})
  
# using groupby function
df.groupby('X').sum()
Python

输出:
Pandas Groupby - 在组内排序

让我们把排序参数传递为False。

# using groupby function 
# with sort
df.groupby('X', sort = False).sum()
Python

输出:
Pandas Groupby - 在组内排序

在这里,我们看到一个在组内有排序值的DataFrame。

示例 2:
现在,让我们举个例子,一个包含不同人的年龄的数据框。使用sort和groupby函数将在键值传递的基础上安排转换后的DataFrame,以获得潜在的速度。

data = {'Name':['Elle', 'Chloe', 'Noah', 'Marco',  
                 'Lee', 'Elle', 'Rachel', 'Noah'],  
        'Age':[17, 19, 18, 17,  
               22, 18, 21, 20]}   
  
df = pd.DataFrame(data) 
df
Python

输出:
Pandas Groupby - 在组内排序

让我们根据名称对上述DataFrame进行分组

# using groupby without sort
df.groupby(['Name']).sum()
Python

输出:
Pandas Groupby - 在组内排序

传递排序参数为False

# using groupby function 
# with sort
df.groupby(['Name'], sort = False).sum()
Python

输出:
Pandas Groupby - 在组内排序

示例 3:
让我们再举个例子,一个由各种汽车和自行车的最高速度组成的DataFrame。
我们将尝试在车辆类型组内对最高速度进行排序。

import pandas as pd
  
  
df = pd.DataFrame([('Bike', 'Kawasaki', 186),
                   ('Bike', 'Ducati Panigale', 202),
                   ('Car', 'Bugatti Chiron', 304), 
                   ('Car', 'Jaguar XJ220', 210),
                   ('Bike', 'Lightning LS-218', 218), 
                   ('Car', 'Hennessey Venom GT', 270),
                   ('Bike', 'BMW S1000RR', 188)], 
                  columns =('Type', 'Name', 'top_speed(mph)'))
  
df
Python

输出:
Pandas Groupby - 在组内排序

使用groupby功能后

# Using groupby function
grouped = df.groupby(['Type'])['top_speed(mph)'].nlargest()
  
# using nlargest() function will get the 
# largest values of top_speed(mph) within
# groups created
print(grouped)
Python

输出:
Pandas Groupby - 在组内排序

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册