Обновите фрейм данных значениями из второго фрейма на основе фильтра

1

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

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
  • 0
    так что Боб и Дэйн уходят от ожидания до?
  • 0
    предоставить ожидаемый выходной df
Показать ещё 1 комментарий
Теги:
pandas

1 ответ

0
Лучший ответ

Используя 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
  • 0
    Работало отлично! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню