python groupby分组后排序
时间: 2023-04-25 21:02:14 浏览: 117
你可以使用 pandas 库中的 groupby() 函数对数据进行分组, 然后使用 sort_values() 函数对分组后的数据进行排序。
```python
import pandas as pd
# 创建数据
data = {'name':['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
'age':[25, 31, 35, 19, 45, 27],
'city':['New York', 'Los Angeles', 'Chicago', 'New York', 'Chicago', 'Chicago']}
df = pd.DataFrame(data)
# 分组并排序
df.groupby('city').apply(lambda x: x.sort_values(by='age'))
```
上面的代码对 city 列进行分组, 然后对每个分组按照 age 列进行排序。
相关问题
python groupby分组后计数的代码
假设有一个包含学生姓名和所在班级的列表students:
```
students = [
{'name': 'Tom', 'class': 'A'},
{'name': 'Jerry', 'class': 'B'},
{'name': 'Alice', 'class': 'A'},
{'name': 'Bob', 'class': 'B'},
{'name': 'Cindy', 'class': 'C'},
{'name': 'David', 'class': 'B'}
]
```
我们可以使用groupby函数将学生按照班级分组,并计算每个班级中有多少名学生:
```
from itertools import groupby
students.sort(key=lambda x: x['class']) # 先按照班级排序
for k, g in groupby(students, key=lambda x: x['class']):
count = len(list(g))
print(f"班级{k}共有{count}名学生")
```
输出结果为:
```
班级A共有2名学生
班级B共有3名学生
班级C共有1名学生
```
python groupby分组后求前十
在Python中,可以使用groupby函数对数据进行分组,并使用聚合函数对每个分组进行计算。要求前十个分组的方法如下:
```python
import pandas as pd
# 创建一个DataFrame示例
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John', 'Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],
'Age': [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75],
'Salary': [5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000,15000, 16000]}
df = pd.DataFrame(data)
# 按照Name列进行分组,并计算每个分组的平均薪资
grouped = df.groupby('Name')['Salary'].mean()
# 对分组结果进行排序,并取前十个分组
top_ten = grouped.sort_values(ascending=False).head(10)
print(top_ten)
```
这段代码首先创建了一个DataFrame示例,然后使用groupby函数按照Name列进行分组,并计算每个分组的平均薪资。最后,对分组结果进行排序,并取前十个分组。输出结果为前十个分组的平均薪资。
阅读全文