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

如何从字符串列表创建DataFrame并合并为单个(不使用字典)

动态创建品牌命名DataFrame并合并的解决方案

嘿,我来帮你搞定这个问题!你直接写 "df_" + i = pd.read_csv(...) 是没法运行的,Python不允许用这种字符串拼接的方式直接给变量赋值。不过我们可以通过操作全局命名空间来实现动态创建变量,之后再把这些DataFrame合并成一个,完全不用字典也能做到。

1. 动态生成对应品牌的DataFrame变量

我们可以用globals()函数来访问全局变量的字典,这样就能把每个品牌对应的DataFrame以df_brand1、df_brand2的形式创建出来,同时还能把这些DataFrame存到一个列表里,方便后续合并:

import pandas as pd

list1 = ['brand1','brand2']
# 初始化一个列表,用来存所有创建好的DataFrame
dfs_collection = []

for brand in list1:
    # 拼接出目标变量名
    target_df_name = f"df_{brand}"
    # 读取CSV并赋值给动态生成的变量
    globals()[target_df_name] = pd.read_csv(f'filepath{brand}.csv')  # 这里假设你的CSV路径是filepath+品牌名,比如filepathbrand1.csv
    # 把刚创建的DataFrame加入列表,为合并做准备
    dfs_collection.append(globals()[target_df_name])

执行这段代码后,你就能在全局环境里找到df_brand1和df_brand2这两个独立的DataFrame了,同时dfs_collection列表里也存着这两个对象的引用。

2. 合并所有DataFrame为单个

有了存着所有DataFrame的列表,直接用pandas.concat()就能轻松合并成一个大的DataFrame:

final_merged_df = pd.concat(dfs_collection, ignore_index=True)

如果每个品牌的DataFrame列结构一致,concat会直接按列对齐合并;如果列结构有差异,它会自动给缺失的列填充NaN,保证数据完整性。

额外优化:保留品牌标识

要是你想在合并后的DataFrame里知道每一行属于哪个品牌,可以在创建单个DataFrame的时候添加一列品牌标记:

import pandas as pd

list1 = ['brand1','brand2']
dfs_collection = []

for brand in list1:
    target_df_name = f"df_{brand}"
    temp_df = pd.read_csv(f'filepath{brand}.csv')
    # 添加品牌列,标记当前数据所属品牌
    temp_df['brand_source'] = brand
    globals()[target_df_name] = temp_df
    dfs_collection.append(temp_df)

final_merged_df = pd.concat(dfs_collection, ignore_index=True)

这样合并后的final_merged_df里每一行都带着brand_source列,能清晰看到数据来源,后续分析起来更方便。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:49