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

如何动态向DataFrame添加列并按命名规则归类放置

自动排序DataFrame列:按前缀分组并追加新增列

核心思路

把列分为两类处理:

  • 无数字后缀的独立列(如rma_number、serial_number),保留原有顺序
  • 带数字后缀的组列(如Conclusion_1、owner_6),按前缀分组后,每组内按数字编号升序排列,新增列会自动归到对应组的末尾

实现代码

import pandas as pd
import re

# 模拟你的DataFrame(实际替换成你的数据即可)
data = {
    'serial_number': ['SN001', 'SN002'],
    'rma_number': ['RMA001', 'RMA002'],
    'owner_6': ['Alice', 'Bob'],
    'Conclusion_2': ['Pass', 'Fail'],
    'owner_1': ['Charlie', 'Dave'],
    'Conclusion_8': ['OK', 'NOK'],
    # 新增列示例
    'owner_7': ['Eve', 'Frank'],
    'date_of_completion_7': ['2024-05-01', '2024-05-02']
}
df = pd.DataFrame(data)

# 正则匹配前缀_数字格式的列
col_pattern = re.compile(r'^(.*)_(\d+)$')

# 拆分列到独立列和分组列字典
independent_cols = []
grouped_cols_dict = {}

for col_name in df.columns:
    match_result = col_pattern.match(col_name)
    if match_result:
        col_prefix = match_result.group(1)
        col_num = int(match_result.group(2))
        # 初始化分组列表
        if col_prefix not in grouped_cols_dict:
            grouped_cols_dict[col_prefix] = []
        grouped_cols_dict[col_prefix].append((col_num, col_name))
    else:
        independent_cols.append(col_name)

# 对每个分组内的列按数字编号排序
sorted_group_cols = []
for prefix in grouped_cols_dict:
    # 按编号升序排列,提取列名
    sorted_cols = [col for num, col in sorted(grouped_cols_dict[prefix], key=lambda x: x[0])]
    sorted_group_cols.extend(sorted_cols)

# 合并最终列顺序:独立列 + 排好序的分组列
final_col_order = independent_cols + sorted_group_cols

# 应用新列顺序
sorted_df = df[final_col_order]

# 验证结果
print("排序后的列顺序:")
print(sorted_df.columns.tolist())

代码说明

  1. 正则匹配:^(.*)_(\d+)$能正确识别多下划线前缀(比如date_of_completion_7会提取前缀date_of_completion,编号7),如果你的列用其他分隔符(如-),直接修改正则里的_即可
  2. 分组排序:每个前缀组内按数字编号升序排列,确保新增的owner_7自动跟在owner_6后面,date_of_completion_7会单独成组(如果后续新增date_of_completion_8,也会自动追加到该组末尾)
  3. 灵活调整:如果需要固定独立列的顺序,直接修改independent_cols为指定列表即可,比如independent_cols = ['rma_number', 'serial_number']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:36