Обновите фрейм данных значениями из второго фрейма на основе фильтра - PullRequest
0 голосов
/ 17 октября 2018

У меня есть два кадра данных:

print df1
        name value a value b recommendation
a       Arn  1       30      Up
b       Bob  1       50      Wait
c       Cain 2       70      Up
d       Dain 3       80      Wait

print df2
        name value a value b recommendation
a       Arn  3       50      Up
b       Bob  2       90      Up
c       Cain 4       170     Up
d       Dain 9       280     Up

Я пытаюсь обновить df1 значениями df2, где рекомендация "Ожидать" на df1 с использованием метода обновления:

df1.update(df2, filter_func = df1.loc[df1['recommendation'] == 'Wait'])

Это не работаетЛюбая идея, как решить эту проблему?

РЕДАКТИРОВАТЬ

Ожидаемый результат будет:

print df1
        name value a value b recommendation
a       Arn  1       30      Up
b       Bob  2       90      Up
c       Cain 2       70      Up
d       Dain 9       280     Up

1 Ответ

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

Используя mask, поверните все на np.nan, затем мы используем combine_first

df1=df1.mask(df1=='Wait').combine_first(df2)
df1
Out[621]: 
   name  valuea  valueb recommendation
a   Arn       1      30             Up
b   Bob       1      50             Up
c  Cain       2      70             Up
d  Dain       3      80             Up

Если вам нужно обновить всю строку

df1.loc[(df1.recommendation!='Wait')].combine_first(df2)
Out[623]: 
   name  valuea  valueb recommendation
a   Arn     1.0    30.0             Up
b   Bob     2.0    90.0             Up
c  Cain     2.0    70.0             Up
d  Dain     9.0   280.0             Up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...