Pandas DataFrame按指定列ASCII字符码多列排序实现问题
实现代码及说明
- 你提到的列序号为从1开始计数,对应你读取DataFrame的列名映射规则为:第6列→列名
'5'、第3列→列名'2'、第4列→列名'3'。Pandas默认的字符串排序规则完全符合要求的ASCII码排序逻辑(数字字符<大写字母<小写字母),只需注意读取数据时指定列类型为字符串,避免数值转换导致排序异常。
完整实现代码如下:
import pandas as pd # 读取时指定所有列为字符串类型,保证排序基于字符ASCII码 df1 = pd.read_csv('input.txt', sep='|', names=['0', '1', '2', '3', '4', '5', '6', '7', '8'], dtype=str) # 按优先级排序:先第6列,再第3列,最后第4列 df_sorted = df1.sort_values(by=['5', '2', '3'], ignore_index=True) # 如需导出为和原格式一致的文本文件,可执行下面的代码 df_sorted.to_csv('sorted_output.txt', sep='|', index=False, header=False)
- 执行后得到的
df_sorted和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Paul Mathew
相关产品推荐
相关产品推荐

