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

如何通过dataframe名称字符串列表拼接多个pandas dataframe?

实现方法说明

结论

该需求可以实现,但仅推荐在交互式场景(如Jupyter Notebook、终端调试)中使用,正式生产代码不建议依赖变量名字符串做逻辑,会大幅提升维护和排查问题的成本。

直接匹配变量名的实现方式

你可以通过globals()(全局作用域)或locals()(局部作用域)获取当前环境的变量字典,通过字符串名称匹配到对应的DataFrame对象,再传入pd.concat即可,封装后的调用方式和你预期的完全一致:

import pandas as pd

# 示例DataFrame定义
df1 = pd.DataFrame({'x': [1, 2, 3], 'y': ['a', 'b', 'c']})    
df2 = pd.DataFrame({'x': [4, 5, 6], 'y': ['d', 'e', 'f']})

def concat_by_name(df_name_list: list[str], **concat_kwargs) -> pd.DataFrame:
    # 从全局作用域提取对应名称的DataFrame,局部作用域可替换为locals()
    df_objects = [globals()[name] for name in df_name_list]
    return pd.concat(df_objects, **concat_kwargs)

# 直接传入字符串列表调用
result = concat_by_name(['df1', 'df2'])

更稳妥的替代方案

如果要规避作用域依赖的问题,推荐提前把所有DataFrame存入字典,用字符串作为字典的key,拼接时直接从字典取值即可:

import pandas as pd

# 提前把DataFrame存入字典,key为对应的字符串名称
df_storage = {
    'df1': pd.DataFrame({'x': [1, 2, 3], 'y': ['a', 'b', 'c']}),
    'df2': pd.DataFrame({'x': [4, 5, 6], 'y': ['d', 'e', 'f']})
}

# 拼接时直接通过字符串列表取值
target_names = ['df1', 'df2']
result = pd.concat([df_storage[name] for name in target_names])

这种写法兼容性更强,也不会因为变量作用域变动、变量名拼写错误引发非预期的报错,更适合在正式代码中使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:18:04