Обновление значений в таблице, если они присутствуют в другой таблице, используя слияние панд - PullRequest
0 голосов
/ 18 октября 2018

У меня есть 2 таблицы, таблица р и таблица q.Содержание таблицы p должно быть обновлено из таблицы q.

Таблица p:

     A    B    C
1   45   22   25
2   34   46   56
3   59   55   44

Таблица q:

     A    B   C 
1   34   46   59
2   59   55   49 

Я хочу объединить эти две таблицына основе столбцов "A" и "B", так что если значения "A", "B" в таблице p отсутствуют в таблице q, значения в столбце B в таблице p совпадают.

Пробовал:

p['A'] = pd.merge(q, on=['A','B'], how='left')['C']

Вывод:

     A    B    C
1   45    22  NaN   
2   34    46   59 
3   59    55   49

Желаемый вывод:

     A    B    C
1   45    22   25
2   34    59   59
3   59    55   49

Я могу создать другой столбец и объединить, а затем объединить обратно в столбец «A»таблицы р, но это кажется длинным.Есть ли более прямой способ сделать это?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете использовать update

keycol=['A','B']
df1=df1.set_index(keycol)
df1.update(df2.set_index(keycol))
df1
Out[762]: 
          C
A  B       
45 22  25.0
34 46  59.0
59 55  49.0
df1.reset_index()
Out[763]: 
    A   B     C
0  45  22  25.0
1  34  46  59.0
2  59  55  49.0

Другое решение от map

df1.A.map(df2.set_index('A').B).fillna(df1.B)
Out[727]: 
1    22.0
2    59.0
3    99.0
Name: A, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...