pandasgroupby按列表次序顺序排序
时间: 2023-10-23 19:14:35 浏览: 104
list排序
pandas的groupby函数默认是按照分组变量的字典序排序的,如果要按照列表次序顺序排序,可以通过设置Categorical类型变量的categories属性实现。
具体操作如下:
1. 将分组变量转换为Categorical类型,并按照列表次序顺序设置categories属性。
```python
import pandas as pd
# 假设要按照以下列表次序顺序排序
group_order = ['group2', 'group3', 'group1']
# 构造示例数据
df = pd.DataFrame({'group': ['group1', 'group2', 'group3', 'group1', 'group2', 'group3'],
'value': [1, 2, 3, 4, 5, 6]})
# 将group列转换为Categorical类型,并按照group_order设置categories属性
df['group'] = pd.Categorical(df['group'], categories=group_order, ordered=True)
```
2. 使用groupby函数进行分组,并调用apply方法进行排序。
```python
# 按照group列进行分组,并对每个分组进行排序
sorted_df = df.groupby('group').apply(lambda x: x.sort_values(by='value')).reset_index(drop=True)
```
其中,lambda函数中的x参数表示每个分组的数据,使用sort_values方法对每个分组的数据按照value列进行排序。最后使用reset_index方法重置索引。
排序后的结果如下:
```
group value
0 group2 2
1 group2 5
2 group3 3
3 group3 6
4 group1 1
5 group1 4
```
阅读全文