如何高效合并相似的Pandas数据框成一个大型数据框
我有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)