【问题标题】:pandas concat to merge list of dataframes to another dataframepandas concat 将数据框列表合并到另一个数据框
【发布时间】:2025-12-01 18:50:01
【问题描述】:

我有名为 a、b、c(和更多)的数据框,我想将它们与名为 d 的数据框连接起来。

我正在做如下:

a= pd.concat([a, d], axis = 0)
b= pd.concat([b, d], axis = 0)
c= pd.concat([c, d], axis = 0)
...

由于我有更多的 tham 3 数据帧 a、b、c,我正在寻找一些方法来更快地完成它,例如在循环中。我正在使用如下代码,但它不起作用:

for x in [a,b,c]:
    global d
    x = pd.concat([x, d], axis = 0)

【问题讨论】:

  • 您需要编写自己的合并函数,在此处检查天气 d 是否为空。如果是,则返回 x,否则:如图所示连接 x 和 d。
  • 不是将三个数据框存储在唯一变量中,而是将它们存储到列表或字典中吗?

标签: python pandas concatenation


【解决方案1】:
import pandas as pd

a = pd.DataFrame({'task':['one'],'label':['tag_01'] })
b = pd.DataFrame({'task':['one'],'label':['tag_01'] })
c = pd.DataFrame({'task':['one'],'label':['tag_01'] })
d = pd.DataFrame({'task':['two'],'label':['tag_02'] })

在使用数据框名称时迭代数据框的常见解决方案是使用另一个带有数据框名称的列表,然后按位置枚举并获取名称的值:

# create a dict containing dfs
names = ['a','b','c']
dict_dfs = ({names[i]: df for i, df in enumerate([a, b, c])})

现在我们可以使用globals() 来生成所需的输出。 globals() 方法返回当前全局符号表的字典。符号表是由编译器维护的数据结构。

for i in dict_dfs:
    globals()[str(i)] = pd.concat([dict_dfs[i], d], axis = 0)

结果:

a
Out[1]: 
  task   label
0  one  tag_01
0  two  tag_02


b
Out[2]: 
  task   label
0  one  tag_01
0  two  tag_02


c
Out[3]: 
  task   label
0  one  tag_01
0  two  tag_02

【讨论】:

  • 我为您的具体情况编辑了我的回答。
  • 请解释你的答案。
  • @RaviKumarGupta 好的
  • 非常感谢您的解释。