Как объединить заполненный фрейм данных с пустым фреймом данных по индексу и столбцам?

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Пример:

    df1 = 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 (df1)


       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

df2 = pd.DataFrame({'a':range(4),
                'b':[5,6,7,8]}, index=list('abce'))

print (df2)

   a  b
a  0  5
b  1  6
c  2  7
e  3  8
  

Как мне объединить заполненный фрейм данных в пустой, который будет выглядеть следующим образом?

    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
  

Проблема в том, что он не подходит для индекса и столбца.

Комментарии:

1. Возможно, этот вопрос связан со Stackoverflow больше, чем здесь.

Ответ №1:

Не уверен, что это самый эффективный способ, но он работает:

 df3 = pd.merge(df1, df2, 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)