Сравните столбцы из разных фреймов данных Pandas и замените их значения <Pandas, Python> - PullRequest
0 голосов
/ 28 августа 2018

У меня есть два одинаковых фрейма данных (с именем dfA, dfB), которые имеют идентификатор и код. Идентификатор представляет собой идентификатор пациента, а код представляет собой код заболевания. dfA больше, и все dfB фактически находятся в dfA. Однако код заболевания в dfA несколько устарел, и его необходимо обновить кодом в dfB.

Моя задача - сравнить все строки идентификаторов dfA с dfB, и, если есть совпадающие идентификаторы, изменить значение кода заболевания в dfA с помощью dfB. Так что код правильно обновляется. Конечный результат - список dfA (с обновленным кодом).

Для обычного питона это будет выглядеть так:

for i in dfA.id:
    if i == dfB.id:
        replace dfA.code with dfB.code 
    else: pass 
print(dfA)

Я знаю, что цикл Панд имеет разные правила, и это можно обработать, не создавая цикл. Я сделал что-то подобное, но не работает.

dfA.where(dfA.id == dfB.id), 'code'][dfB.code]

Не могли бы вы пролить свет на это? Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Использование

s=dfA.id.map(dfB.set_index('id').code)
dfA.code=s.fillna(dfA.code)
...