我有 7000 个带列的数据框
Date, X_1
Date, X_2
...
每个数据框有大约 2500 行。
日期有时会重叠,但不保证会重叠。
我想将它们组合成表单的数据框
Date X_1 X_2 etc.
我尝试应用combine_first
7000 次,但速度真的很慢,因为它必须创建 7000 个新对象,每个都比上一个稍大。
有没有更有效的方法来组合多个数据帧?
我有 7000 个带列的数据框
Date, X_1
Date, X_2
...
每个数据框有大约 2500 行。
日期有时会重叠,但不保证会重叠。
我想将它们组合成表单的数据框
Date X_1 X_2 etc.
我尝试应用combine_first
7000 次,但速度真的很慢,因为它必须创建 7000 个新对象,每个都比上一个稍大。
有没有更有效的方法来组合多个数据帧?
假设 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)
这个怎么样。
list_of_dfs = os.listdir(dir_with_data)
df = concat(list_of_dfs)
df.set_index('Date')
df = df.unstack()