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

如何使用循环同时处理多个Pandas DataFrame并批量修改列名

批量修改列表中DataFrame的列名(添加DataFrame名称前缀)

这问题在批量处理DataFrame时挺常见的,不过有个小细节得先注意:你现在的lst1里只存了DataFrame对象本身,它们并没有自带df1、df2这些变量名——直接循环列表的话,咱们没法自动获取每个DataFrame对应的原变量名。所以得先把「名字」和「DataFrame对象」关联起来,推荐用字典来存储,这种方式最稳妥。

方法一:用字典关联名字与DataFrame(推荐)

先把你的DataFrame和对应的名字打包成字典,然后循环处理每个键值对:

import pandas as pd
import numpy as np

# 先定义你的DataFrame
df1 = pd.DataFrame({'a':np.arange(4), 'b':np.arange(4)})
df2 = pd.DataFrame({'a':np.arange(4), 'b':np.arange(4)})
df3 = pd.DataFrame({'a':np.arange(4), 'b':np.arange(4)})

# 把DataFrame和名字对应成字典
df_dict = {'df1': df1, 'df2': df2, 'df3': df3}

# 循环修改列名
for df_name, df in df_dict.items():
    # 用列表推导式拼接名字和原列名
    df.columns = [f"{df_name}{col}" for col in df.columns]

运行后,你打印df1就能看到想要的效果:

df1a  df1b
0     0     0
1     1     1
2     2     2
3     3     3

方法二:如果坚持用原列表(需手动维护名字顺序)

如果你不想改列表的存储方式,那需要额外准备一个和lst1顺序完全对应的名字列表,用zip配对后循环:

lst1 = [df1, df2, df3]
df_names = ['df1', 'df2', 'df3']

for name, df in zip(df_names, lst1):
    df.columns = [f"{name}{col}" for col in df.columns]

⚠️ 注意:这种方式必须保证df_names和lst1的顺序完全一致,不然会出现名字和DataFrame对应错误的问题,所以还是字典的方式更可靠。

补充说明

因为Pandas的DataFrame是可变对象,所以循环里修改df.columns会直接修改原来的df1、df2变量,不需要额外赋值回去,这点很方便~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:32:38