4

我有 7000 个带列的数据框

Date, X_1
Date, X_2
...

每个数据框有大约 2500 行。

日期有时会重叠,但不保证会重叠。

我想将它们组合成表单的数据框

Date  X_1  X_2 etc.

我尝试应用combine_first7000 次,但速度真的很慢,因为它必须创建 7000 个新对象,每个都比上一个稍大。

有没有更有效的方法来组合多个数据帧?

4

2 回答 2

4

假设 Date 是索引而不是列,那么您可以执行“outer” join

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

注意:传入 DataFrames 的生成器而不是列表可能更有效。

例如:

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

.

如果'Date'是列,您可以set_index先使用:

df1.set_index('Date', inplace=True)
于 2013-02-01T22:03:17.147 回答
0

这个怎么样。

list_of_dfs = os.listdir(dir_with_data)
df = concat(list_of_dfs)
df.set_index('Date')
df = df.unstack()
于 2013-02-02T20:34:35.123 回答