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

如何提取并更新Pandas DataFrame列名?保留非目标列原名

解决Pandas列名匹配重命名问题

当读取数据到Pandas DataFrame时,目标列名前后常混杂随机字符串,同时存在无关列且列顺序不固定。需要将匹配目标列名的列重命名为标准名称,无关列保留原列名。

示例数据

import pandas as pd
import numpy as np

df = pd.DataFrame(
    np.random.randn(4, 5),
    columns=['betarandstr1.823491', 'alpha randstr123', 'other', 'delta', 'randstr-1.281999 gamma']
)

keys = ['alpha', 'beta', 'gamma', 'delta']  # 期望的标准列名

已完成的提取步骤

通过正则提取可获取每列对应的标准名称:

extracted_names = df.columns.str.extract('(%s)' % '|'.join(keys))
print(extracted_names)

输出结果:

0
0   beta
1  alpha
2    NaN
3  delta
4  gamma

最终解决方案

利用fillna将提取结果中的NaN替换为原列名,再赋值给DataFrame的列名即可:

# 提取列名并替换NaN为原列名
new_columns = extracted_names[0].fillna(df.columns)
# 更新DataFrame的列名
df.columns = new_columns

验证最终列名:

print(df.columns)

输出结果:

Index(['beta', 'alpha', 'other', 'delta', 'gamma'], dtype='object')

补充说明

  • 正则表达式中的括号用于精确捕获匹配到的目标列名,避免提取到多余字符
  • fillna(df.columns)会针对每个位置的NaN,替换为对应位置的原始列名,确保无关列保留原名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:08:26