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

如何用for循环实现多组DataFrame的pd.concat拼接操作?

解决批量DataFrame拼接的循环实现问题

嘿,我懂你想通过循环简化这些重复的拼接操作,你原来的代码之所以报错,是因为不能直接通过字符串拼接的方式动态创建变量名,而且df_ab+str(i+1)这种写法也没法直接获取到对应的df_ab1、df_ab2这类已存在的DataFrame对象。下面给你两种规范且易维护的实现方案:

方案一:使用字典存储结果(推荐,可通过键名快速访问)

字典可以让你像原来的变量名那样,通过df_dict['df_1']来访问对应的拼接结果,同时避免污染全局命名空间:

import pandas as pd
import numpy as np

# 假设df_ab1到df_ab9、df_xy1到df_xy9已经定义好
df_dict = {}
for i in range(1, 10):
    # 通过globals()获取全局变量中的对应DataFrame
    df_ab = globals()[f'df_ab{i}']
    df_xy = globals()[f'df_xy{i}']
    # 拼接后存入字典
    df_dict[f'df_{i}'] = pd.concat([df_ab, df_xy], axis=1)

# 调用示例:获取第3个拼接结果
print(df_dict['df_3'])

方案二:使用列表存储结果(适合按顺序访问)

如果不需要按命名访问,只是想批量生成拼接后的DataFrame,用列表会更简洁:

df_list = []
for i in range(1, 10):
    df_ab = globals()[f'df_ab{i}']
    df_xy = globals()[f'df_xy{i}']
    df_list.append(pd.concat([df_ab, df_xy], axis=1))

# 调用示例:获取第3个拼接结果(注意列表索引从0开始)
print(df_list[2])

为什么不推荐直接动态创建变量?

虽然可以通过globals()[f'df_{i}'] = pd.concat(...)的方式直接生成df_1到df_9这类变量,但这种做法会让你的代码难以维护——你很难追踪这些动态生成的变量,而且容易和现有变量产生命名冲突,所以优先用字典或列表这类容器来管理批量生成的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:45