如何用列表元素将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
相关产品推荐
相关产品推荐

