Я ищу элегантный способ добавить все строки из одного DataFrame в другой DataFrame (оба DataFrames имеют одинаковый индекс и структуру столбцов), но в тех случаях, когда одно и то же значение индекса появляется в обоих DataFrames, используйте строку из второй кадр данных.
Итак, например, если я начинаю с:
df1:
                    A      B
    date
    '2015-10-01'  'A1'   'B1'
    '2015-10-02'  'A2'   'B2'
    '2015-10-03'  'A3'   'B3'
df2:
    date            A      B
    '2015-10-02'  'a1'   'b1'
    '2015-10-03'  'a2'   'b2'
    '2015-10-04'  'a3'   'b3'
Я хотел бы получить результат:
                    A      B
    date
    '2015-10-01'  'A1'   'B1'
    '2015-10-02'  'a1'   'b1'
    '2015-10-03'  'a2'   'b2'
    '2015-10-04'  'a3'   'b3'
Это аналогично тому, что, как мне кажется, называется "upsert" в некоторых системах SQL - комбинация обновления и вставки в том смысле, что каждая строка из df2 является либо (a), используемой для обновления существующей строки в df1, если ключ строки уже существует в df1 или (b) вставлен в df1 в конце, если ключ строки еще не существует.
Я придумал следующее
pd.concat([df1, df2])     # concat the two DataFrames
    .reset_index()        # turn 'date' into a regular column
    .groupby('date')      # group rows by values in the 'date' column
    .tail(1)              # take the last row in each group
    .set_index('date')    # restore 'date' as the index
который, кажется, работает, но это зависит от порядка строк в каждой группе по группе, всегда являющейся тем же самым, что и исходные DataFrames, которые я не проверял, и кажется неудовлетворительно запутанным.
Есть ли у кого-нибудь идеи для более простого решения?
