Я хочу объединить два dataframes
. Один dataframe
, скажем Empty_DF
, пуст и имеет большой размер (320 столбцов на 240 строк) с индексами и именами столбцов только целыми числами. Другой, ROI_DF
, меньше и заполнен и в определенном месте соответствует индексам и именам столбцов.
Я пытался использовать функцию pandas.merge
, как было предложено в этом вопросе ;однако, это только добавило бы столбцы к пустому dataframe
Empty_DF
и не заменяло бы значения.
Empty_DF = pd.DataFrame({'a':[0,0,0,0,0,0],
'b':[0,0,0,0,0,0], 'b':[0,0,0,0,0,0]}, index=list('abcdef'))
print (Empty_DF)
ROI_DF= pd.DataFrame({'a':range(4),
'b':[5,6,7,8]}, index=list('abce'))
print(ROI_DF)
a b c
a 0 0 0
b 0 0 0
c 0 0 0
d 0 0 0
e 0 0 0
f 0 0 0
В этом примере этого достаточно, поскольку dataframe
маленький и можно использовать параметр pandas.fillna
с pandas.drop. Есть ли более эффективный способ оптимизировать это для большего dataframes
?
df3 = pd.merge(Empty_DF, ROI_DF, how='left', left_index=True,
right_index=True, suffixes=('_x', ''))
df3['a'].fillna(df3['a_x'], inplace=True)
df3['b'].fillna(df3['b_x'], inplace=True)
df3.drop(['a_x', 'b_x'], axis=1, inplace=True)
print(df3)
a b c
a 0 5 0
b 1 6 0
c 2 7 0
d 0 0 0
e 3 8 0
f 0 0 0