У меня есть два кадра данных:
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
Используя 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