如何有效地将Pandas中的类似数据帧组合成一个巨大的数据帧

时间:2013-02-01 21:16:52

标签: python pandas time-series

我有7000列数据框

Date, X_1
Date, X_2
...

每个数据框大约有2500行。

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

我想将它们组合成表格

的数据框
Date  X_1  X_2 etc.

我尝试应用combine_first 7000次,但它确实很慢,因为它必须创建7000个新对象,每个对象都比上一个略大。

是否有更有效的方法来组合多个数据框?

2 个答案:

答案 0 :(得分:4)

假设Date是索引而不是列,那么你可以做一个“外部”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)

答案 1 :(得分:0)

怎么样。

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