Я пытаюсь создать накопительный фрейм данных из различных фрагментированных небольших фреймов данных.
Например, у меня есть фрагментированные небольшие фреймы данных A и B, такие как:
a c
100 1 2
200 5 6
a b d
100 2 3 8
200 9 1 9
A = pd.DataFrame(data = [[1,2],[5,6]], index=[100,200], columns=['a','c'])
B = pd.DataFrame(data = [[2,3,8],[9,1,9]], index=[100,200], columns=['a','b','d'])
, и я хочу добавить их в кумулятивный фрейм данных c
a b c d
100 0 0 0 0
200 0 0 0 0
C = pd.DataFrame(data = [[0,0,0,0],[0,0,0,0]], index=[100,200], columns=['a','b','c','d'])
то, что я хочу сделать, это добавить A и B к C, чтобы сделать:
a b c d
100 3 3 2 8
200 14 1 6 9
то, что я сделал сначала, было что-то вроде:
C[A.columns] += A
C[B.columns] += B
, который прекрасно работает и приносит желаемоеoutput.
Однако в моем реальном приложении проблемы с эффективностью возрастают, поскольку размеры A, B и C довольно велики, и существует множество фрагментированных информационных фреймов, таких как A и B
.Поэтому я искал несколько альтернативных методов и нашел pandas.eval довольно мощным в матричных операциях большого размера.
Я попробовал:
import pandas as pd
C = pd.eval('C+A')
C = pd.eval('C+B')
Однако в этом случае столбцы, не включенные в A или B, становятся NaN ...
out:
a b c d
100 1.0 NaN 2.0 NaN
200 5.0 NaN 6.0 NaN
out:
a b c d
100 3.0 NaN NaN NaN
200 14.0 NaN NaN NaN
Любые предложения посделать желаемую операцию более эффективно?Будем благодарны за любые предложения (мне не обязательно использовать pd.eval)
Заранее спасибо!