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

如何用列表元素将Pandas数据框列名中的指定名称替换为数字

用列表元素替换Pandas数据框部分列名的方法

方法一:批量正则替换(高效)

先将名称列表与数字列表配对成映射字典,再通过正则匹配批量替换列名中的目标子串:

import pandas as pd
import re

# 模拟目标数据框
df = pd.DataFrame({
    'area_Smith': [1,2,3],
    'area_Jones': [4,5,6],
    'area_Johnson': [7,8,9],
    'average_volume_Smith': [10,11,12]
})

# 定义名称与对应数字的列表
names = ['Smith', 'Jones', 'Johnson']
numbers = ['0', '1', '2']

# 创建名称到数字的映射字典
name_mapping = dict(zip(names, numbers))

# 生成正则匹配规则(自动转义特殊字符,避免正则冲突)
pattern = '|'.join(re.escape(name) for name in name_mapping.keys())

# 批量替换列名
df.columns = df.columns.str.replace(pattern, lambda m: name_mapping[m.group()], regex=True)

# 输出结果
print(df.columns)

运行后得到列名:Index(['area_0', 'area_1', 'area_2', 'average_volume_0'], dtype='object')

方法二:循环替换(直观易理解)

如果名称中没有正则特殊字符,直接循环遍历列表对列名做逐个替换即可:

import pandas as pd

# 模拟数据框与定义列表(同上)
df = pd.DataFrame({
    'area_Smith': [1,2,3],
    'area_Jones': [4,5,6],
    'area_Johnson': [7,8,9],
    'average_volume_Smith': [10,11,12]
})
names = ['Smith', 'Jones', 'Johnson']
numbers = ['0', '1', '2']

# 循环替换每个名称
for name, num in zip(names, numbers):
    df.columns = df.columns.str.replace(name, num)

print(df.columns)

两种方法都能实现需求,批量正则替换适合处理大量名称的场景,循环替换更适合新手快速上手。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:05:33