如何高效合并相似的Pandas数据框成一个大型数据框

4 投票
2 回答
1748 浏览
提问于 2025-04-17 14:29

我有7000个数据框,每个数据框的列是

Date, X_1
Date, X_2
...

每个数据框大约有2500行。

这些日期有时会重叠,但并不一定总是这样。

我想把它们合并成一个特定格式的数据框,格式是

Date  X_1  X_2 etc.

我试着用 combine_first 方法合并7000次,但速度非常慢,因为它需要创建7000个新的对象,每个对象都比上一个大一点。

有没有更高效的方法来合并多个数据框呢?

2 个回答

0

这样怎么样。

list_of_dfs = os.listdir(dir_with_data)
df = concat(list_of_dfs)
df.set_index('Date')
df = df.unstack()
4

假设“日期”是索引而不是一列数据,那么你可以使用一种叫做“外连接”的方法来合并数据,具体可以参考这个join的链接。

df1.join([df2, df3, ..., df7000], how='outer')

注意:传入一个数据框的生成器可能会比传入一个列表更高效。

举个例子:

df1 = pd.DataFrame([[1, 2]], columns=['a', 'b'])
df2 = pd.DataFrame([[3, 4]], index=[1], columns=['c', 'd'])
df3 = pd.DataFrame([[5, 6], [7, 8]], columns=['e', 'f'])

In [4]: df1.join([df2, df3], how='outer')
Out[4]: 
    a   b   c   d  e  f
0   1   2 NaN NaN  5  6
1 NaN NaN   3   4  7  8

.

如果“日期”是一个列的话,你可以先使用set_index来设置它为索引:

df1.set_index('Date', inplace=True)

撰写回答