Обновление фрейма данных Python новыми данными из другого фрейма данных - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь обновить существующий фрейм данных (df1) данными, полученными из другого фрейма данных (df2).Фрейм данных df2 может иметь новый столбец, новые строки или новые данные.Вот пример того, что я пытаюсь выполнить.

df1

    var1   var2    var3
a      8      4      12
b     -1     -4      -3
c      9     12      11
d     12     15       7
e      1      3      12
f      2      4       6

df2 (обратите внимание, что это почти как df1, за исключением того, что у него нет столбца var1, есть новый столбец var4, имеет обновленные значения для var3, var2 такой же и имеет новую строку "month s3").

    var2    var3    var4
a      4      10      12 
b     -4       0       4
c     12      15       9
d     15      12       5
e      3      17       7
f      4      16       8
g      0       0       4

Это должно быть обновленное df

    var1   var2    var3    var4
a      8      4      10      12 
b     -1     -4       0       4
c      9     12      15       9
d     12     15      12       5
e      1      3      17       7
f      2      4      16       8
g      0      0       0       4

Как лучшевыполнить эту задачу?(Я специально застрял на добавлении любой дополнительной строки, которая может присутствовать в df2).

1 Ответ

0 голосов
/ 14 сентября 2018

Поскольку оба фрейма данных совместно используют индекс, самый простой способ объединить их - выполнить внешнее соединение:

df = df1.join(df2, how='outer', lsuffix='_l').fillna(0).astype(int)

lsuffix помечает дублированные столбцы в левом кадре данных с достаточной '_l'. fillna заполняет пропущенные значения в левом фрейме данных нулями. Наконец, удалите дублированные столбцы:

df = df.loc[:,~df.columns.str.endswith('_l')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...