Python批量重命名DataFrame列:按new_var序号规则调整var列名
批量重命名DataFrame列名(按指定规则)
问题描述
你的DataFrame当前列名示例:
day var1 new_var1 var2 new_var2 new_var3 var3 new_var4 var4 new_var5 var5 new_var6 new_var7 ...
需要修改为:
day var1 new_var1 var2 new_var2 new_var3 var4 new_var4 var5 new_var5 var6 new_var6 new_var7 ...
核心规则:所有varX列必须紧跟在对应的new_varX列之后,且var的序号要比它前面的new_var序号大1。由于列数超200,必须批量处理。
解决方案(Pandas实现)
直接用Python遍历列名,自动生成重命名映射,代码如下:
import pandas as pd # 替换成你的实际DataFrame # df = pd.read_csv("your_data_source.csv") # 模拟示例列名(实际使用时直接用df.columns即可) cols = ["day", "var1", "new_var1", "var2", "new_var2", "new_var3", "var3", "new_var4", "var4", "new_var5", "var5", "new_var6", "new_var7"] df = pd.DataFrame(columns=cols) # 构建重命名字典 rename_map = {} last_new_var_idx = None for col in df.columns: if col == "day": continue # day列保留原名称 elif col.startswith("new_var"): # 提取new_var后的数字序号 last_new_var_idx = int(col.split("_")[-1]) elif col.startswith("var"): if last_new_var_idx is not None: # 生成新的var列名:序号 = 前一个new_var序号 + 1 new_col_name = f"var{last_new_var_idx + 1}" rename_map[col] = new_col_name # 执行批量重命名(inplace=True直接修改原DataFrame) df.rename(columns=rename_map, inplace=True) # 查看修改后的列名 print(df.columns.tolist())
代码说明
- 遍历每一列,遇到
new_varX时记录下X的数值 - 遇到
var开头的列时,自动用X+1作为新序号生成列名 - 最后用
rename()批量替换,不管多少列都能快速处理,完全无需手动编写映射关系
内容的提问来源于stack exchange,提问作者MG Fern
相关产品推荐
相关产品推荐

