Обновите одно значение фрейма данных другим значением столбца фрейма в зависимости от условия - PullRequest
0 голосов
/ 29 мая 2019

У меня есть два фрейма данных, скажем df1 и df2.

df1:

id code remarks
1   a12  
2   b32  
3   c12

df2:

id code remarks
1   aaa12  ok
2   b32    done
3   ccc12  not ok

Я хочу обновить значение df1 примечаний значением df2 примечаний, основанным на id и code.

Здесь второе значение соответствует (id-2 , code-b32), поэтому обновите значение примечания 'done' в столбце df1 примечания.

Конечный результат df1 будет таким, как показано ниже,

df1:

id code remarks
1   a12  
2   b32  done
3   c12

До сих пор я пытался, как показано ниже, я знаю, что это не правильно, но мне нужно что-то вроде этого

df1_key = df1['id'].astype(str) + df1['code'].astype(str)
df2_key = df2['id'].astype(str) + df2['code'].astype(str)

df['flag'] = df1_key.isin(df2_key, df1['remarks']=df2['remarks'])

Согласно это один, я попробовал нижеКроме того, но у меня не получилось.

 df3 = df1.merge(df2[['remarks']], on=['id','code'], how='left')

1 Ответ

0 голосов
/ 29 мая 2019

Использовать DataFrame.merge с отфильтрованными столбцами по списку:

df3 = df1[['id','code']].merge(df2, on=['id','code'], how='left')

Или DataFrame.drop:

df3 = df1.drop('remarks', axis=1).merge(df2, on=['id','code'], how='left')

print (df3)
   id code remarks
0   1  a12     NaN
1   2  b32    done
2   3  c12     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...