Как заменить значения в столбце данных на основе другого условия - PullRequest
0 голосов
/ 24 августа 2018

У меня есть два кадра данных, XXX и переопределение.

XXX = pd.DataFrame({'A':['One', 'Two', 'Three'], 'B': [6,4,3], 'C': ['red','green','blue']})

override = pd.DataFrame({'A':['One','Two'], 'C': ['apple','pie']})

Я ищу лучший способ заменить значения столбца C кадра данных XXX, где значения столбца Aпереопределенного информационного кадра равны значениям в столбце A информационного кадра XXX.

Я пытался использовать XXX ['C'] = XXX.merge (override, on = "A").C_y, но значение «blue» в строке «Three» заменено на NaN, но я хочу сохранить исходное значение «blue».

Каковы лучшие и наиболее эффективные методы для этого с использованием поля Aв качестве ключа, который является XXX.A = override.A.Большое спасибо

Ответы [ 2 ]

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

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

XXX=XXX.set_index('A')
XXX.update(override.set_index('A'))
XXX
Out[471]: 
       B      C
A              
One    6  apple
Two    4    pie
Three  3   blue
XXX.reset_index()
Out[472]: 
       A  B      C
0    One  6  apple
1    Two  4    pie
2  Three  3   blue
0 голосов
/ 24 августа 2018

Вы можете использовать map и fillna поверх картографа серии

In [1077]: XXX.A.map(override.set_index('A')['C']).fillna(XXX.C)
Out[1077]:
0    apple
1      pie
2     blue
Name: A, dtype: object

In [1078]: XXX.C = XXX.A.map(override.set_index('A')['C']).fillna(XXX.C)

In [1079]: XXX
Out[1079]:
       A  B      C
0    One  6  apple
1    Two  4    pie
2  Three  3   blue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...