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

PPa*_*ker 5 python loops concat dataframe

我有多个(超过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
Run Code Online (Sandbox Code Playgroud)

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

如何合并N个数据帧?

Rui*_*ian 47

我想你可以把它放到一个列表中,然后连接这个列表。在 Pandas 中,chunk 函数已经做到了这一点。我个人在 Pandas 中使用 chunk 函数时会这样做。

pdList = [df1, df2, ...]  # List of your dataframes
new_df = pd.concat(pdList)
Run Code Online (Sandbox Code Playgroud)

假设您的 dfs 始终以“cluster”开头,则自动创建 pdList。

pdList = []
pdList.extend(value for name, value in locals().items() if name.startswith('cluster_'))
Run Code Online (Sandbox Code Playgroud)

  • 您好 PParker,我更新了您创建 pdList 的答案。 (2认同)

zaf*_*rin 5

一般是这样的:

frames = [df1, df2, df3]
result = pd.concat(frames)
Run Code Online (Sandbox Code Playgroud)

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

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

如果您在内存中生成 df,请先尝试将其保存.pkl

  • 您现在如何保存数据框?他们在哪里得救?或者它们是由您的代码在内存中生成的? (2认同)