4

列を持つ7000個のデータフレームがあります

Date, X_1
Date, X_2
...

各データフレームには約 2500 行あります。

日付が重なる場合がありますが、必ず重なるわけではありません。

それらをフォームのデータフレームに結合したい

Date  X_1  X_2 etc.

7000 回適用しようとしcombine_firstましたが、7000 個の新しいオブジェクトを作成する必要があり、それぞれが最後のオブジェクトよりわずかに大きくなるため、非常に遅くなりました。

複数のデータフレームを結合するより効率的な方法はありますか?

4

2 に答える 2

4

Date が列ではなくインデックスであると仮定すると、「outer」を実行できますjoin

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

注: リストではなく、DataFrame のジェネレーターを渡す方が効率的かもしれません。

例えば:

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 に答える