要按组对pandas数据帧进行排序并保持所需的顺序,可以使用sort_values
方法和groupby
方法的组合。
下面是一个示例代码:
import pandas as pd
# 创建示例数据帧
df = pd.DataFrame({'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
'Value': [1, 2, 3, 4, 5, 6]})
# 定义所需的顺序
order = ['B', 'C', 'A']
# 按组对数据帧进行排序并保持所需的顺序
df_sorted = df.sort_values(by='Group')
df_sorted['Group'] = pd.Categorical(df_sorted['Group'], categories=order, ordered=True)
df_sorted = df_sorted.sort_values(by='Group')
print(df_sorted)
输出结果如下:
Group Value
2 B 3
3 B 4
4 C 5
5 C 6
0 A 1
1 A 2
在上面的代码中,首先使用sort_values
方法按组对数据帧进行排序。然后,将'Group'列转换为有序分类变量,其中指定了所需的顺序。最后,再次使用sort_values
方法按照'Group'列进行排序,以保持所需的顺序。
这样,数据帧将按照所需的顺序进行排序,并且每个组内的顺序也将保持不变。