You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对含重复值的Pandas DataFrame按col1/col2交换规则排序?

Pandas DataFrame 互换排序逻辑解决方案

需求说明

需要对包含百万级行及额外列的Pandas DataFrame进行排序,实现col1与col2的排序逻辑互换,但不能直接交换列顺序。

原始数据构建

import pandas as pd

# 构建col1数据
col1 = ['1M'] * 12
col11 = ['2M'] * 12
col111 = ['3M'] * 12
col1111 = ['4M'] * 12
final_col1 = col1 + col11 + col111 + col1111

# 构建col2数据
col2 = ['1M', '2M', '3M', '4M']
final_col2 = 12 * col2

# 生成DataFrame并添加模拟额外列
df1 = pd.DataFrame({
    'col1': final_col1,
    'col2': final_col2,
    'data': range(1, len(final_col1)+1)
})

输入输出样例

输入(截取部分)

col1 col2  data
0    1M   1M     1
1    1M   2M     2
2    1M   3M     3
3    1M   4M     4
4    1M   1M     5
...
12   2M   1M    13

输出(对应截取部分)

col1 col2  data
0   1M   1M     1
1   2M   1M    13
...

高效排序解决方案

直接使用sort_values方法,指定排序优先级为col2优先、col1其次,即可实现排序逻辑互换,同时保留原有列顺序和所有数据,适合百万级大数据场景:

# 按col2、col1排序,实现逻辑互换
df_sorted = df1.sort_values(by=['col2', 'col1'], ignore_index=True)

原理说明

原数据默认排序逻辑为先按col1分组,组内按col2排序;通过sort_values(by=['col2', 'col1']),将排序逻辑改为先按col2分组,组内按col1排序,完美实现需求,且无需重构DataFrame,性能最优。

内容的提问来源于stack exchange,提问作者Macro Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:37:45