如何在Python中合并多个数据框?

时间:2018-12-21 00:12:03

标签: python loops dataframe concat

我有多个(超过100个)数据帧。我怎样才能把它们全部吸引住?

问题是,我有太多数据框,无法将它们手动写入列表中,如下所示:

>>> cluster_1 = pd.DataFrame([['a', 1], ['b', 2]],
...                    columns=['letter  ', 'number'])


>>> cluster_1
  letter  number
0      a       1
1      b       2


>>> cluster_2 = pd.DataFrame([['c', 3], ['d', 4]],
...                    columns=['letter', 'number'])


>>> cluster_2
  letter  number
0      c       3
1      d       4


>>> pd.concat([cluster_1, cluster_2])
  letter number
0      a       1
1      b       2
0      c       3
1      d       4

我的N个数据帧的名称是cluster_1,cluster_2,cluster_3,...,cluster_N。 N可以很高。

如何合并N个数据帧?

3 个答案:

答案 0 :(得分:0)

我认为您可以将其放入列表中,然后合并该列表。在Pandas中,块函数类已经做到了。我个人在熊猫中使用块函数时会这样做。

pdList = [df1, df2, ...]  # List of your dataframes
new_df = pd.concat(pdList)

要自动创建pdList并假设您的df始终以“群集”开头。

pdList = []
pdList.extend(value for name, value in locals().items() if name.startswith('cluster_'))

答案 1 :(得分:0)

使用:

pd.concat(your list of column names)

如果需要常规索引:

pd.concat(your list of column names,ignore_index=True)

答案 2 :(得分:0)

通常情况如下:

FooType

注意:它将自动重置索引。 阅读有关合并here的不同类型的更多详细信息。

用于大量数据帧: 如果您有数百个数据帧,则取决于是否存在于磁盘或内存中,您仍然可以使用for循环创建列表(代码段中的“帧”)。如果将其保存在磁盘中,只需将所有df保存在一个文件夹中,然后从该文件夹中读取所有文件,即可轻松完成。

如果要在内存中生成df,则可以先尝试将其保存在frames = [df1, df2, df3] result = pd.concat(frames) 中。