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

如何基于列名中的数字对Pandas DataFrame进行列排序?

按列名中的数字重排DataFrame列顺序

可以通过提取列名中的数字,再按数字排序列名,最后重新索引DataFrame来实现,具体步骤如下:

  1. 读取数据到DataFrame
    先确保你已经用pandas加载了数据:

    import pandas as pd
    import re
    
    df = pd.read_csv("你的数据文件路径.csv")  # 也可用read_excel等其他读取方式
    
  2. 提取列名中的数字并排序列名
    用正则表达式从每个列名里提取出数字N,然后根据这个数字对列名列表进行排序:

    # 定义函数提取列名中的数字
    def extract_number(col):
        # 匹配列名中'-'和'<'之间的数字
        num = re.findall(r'-(\d+)<', col)[0]
        return int(num)
    
    # 按提取的数字从小到大排序列名
    ordered_columns = sorted(df.columns, key=extract_number)
    
  3. 重新排列DataFrame的列
    用排序后的列名列表重新索引DataFrame,即可得到按1到32顺序排列的列:

    df = df[ordered_columns]
    

如果想更简洁,也可以把步骤2和3合并成一行:

df = df[sorted(df.columns, key=lambda col: int(re.findall(r'-(\d+)<', col)[0]))]

补充说明

  • 这里的正则表达式r'-(\d+)<'是精准匹配你的列名格式:数字在-和<之间,确保能准确提取N。如果列名格式有细微变化,可能需要调整正则表达式。
  • 假设所有列都符合给定的格式,且包含1到32的所有数字,无缺失或重复。如果有异常列,你可以先筛选出符合格式的列再排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:35:19