如何在 Python 中连接多个数据帧?
How can I concat multiple dataframes in Python?
我有多个(超过 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 个数据帧?
我想你可以把它放到一个列表中,然后连接这个列表。在 Pandas 中,chunk 函数已经做到了这一点。我个人在 pandas.
中使用 chunk 函数时这样做
pdList = [df1, df2, ...] # List of your dataframes
new_df = pd.concat(pdList)
假设您的 dfs 始终以 "cluster" 开头,自动创建 pdList。
pdList = []
pdList.extend(value for name, value in locals().items() if name.startswith('cluster_'))
使用:
pd.concat(your list of column names)
如果想要常规索引:
pd.concat(your list of column names,ignore_index=True)
大体上是这样的:
frames = [df1, df2, df3]
result = pd.concat(frames)
注意:它会自动重置索引。
阅读有关不同类型合并的更多详细信息 here。
对于大量数据帧:
如果您有数百个数据帧,取决于其中一个是在磁盘上还是在内存中,您仍然可以使用 for 循环创建一个列表(代码片段中的 "frames")。如果您在磁盘中有它,只需将所有 df 保存在一个文件夹中然后从该文件夹中读取所有文件即可轻松完成。
如果您在内存中生成 df,请先尝试将其保存在 .pkl
中。
我有多个(超过 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 个数据帧?
我想你可以把它放到一个列表中,然后连接这个列表。在 Pandas 中,chunk 函数已经做到了这一点。我个人在 pandas.
中使用 chunk 函数时这样做pdList = [df1, df2, ...] # List of your dataframes
new_df = pd.concat(pdList)
假设您的 dfs 始终以 "cluster" 开头,自动创建 pdList。
pdList = []
pdList.extend(value for name, value in locals().items() if name.startswith('cluster_'))
使用:
pd.concat(your list of column names)
如果想要常规索引:
pd.concat(your list of column names,ignore_index=True)
大体上是这样的:
frames = [df1, df2, df3]
result = pd.concat(frames)
注意:它会自动重置索引。 阅读有关不同类型合并的更多详细信息 here。
对于大量数据帧: 如果您有数百个数据帧,取决于其中一个是在磁盘上还是在内存中,您仍然可以使用 for 循环创建一个列表(代码片段中的 "frames")。如果您在磁盘中有它,只需将所有 df 保存在一个文件夹中然后从该文件夹中读取所有文件即可轻松完成。
如果您在内存中生成 df,请先尝试将其保存在 .pkl
中。