У меня есть два dfs
:
df1
Person Dept Date Company ID Value
0 Faye Sales 12/31/16 FB Co Inc 123 27
1 Faye Sales 3/31/17 Unknown 123 34
2 Ray Eng 3/31/18 xyz co 345 59
3 Ray HR 6/30/18 XyZ 345 54
4 Jay HR 9/30/18 A 678 53
5 Jim Ops 9/30/16 New 999 8
и df2
Company Symbol ID
0 FB Inc FB 123
1 XYZ Corp No Symbol 345
2 A LLC AA 678
3 EFG Corp EFG 555
Я хочу:
- объединить в
ID
- заменить
Company
в df1
на аккуратно отформатированный в df2
(но также сохранить Company
из df1
, если нет совпадений в df2
) - добавить
Symbol
из df2
в df1
, чтобы результат выглядел следующим образом:
Person Dept Date Company Symbol ID Value
0 Faye Sales 12/31/16 FB Inc FB 123 27
1 Faye Sales 3/31/17 FB Inc FB 123 34
2 Ray Eng 3/31/18 XYZ Corp No Symbol 345 59
3 Ray HR 6/30/18 XYZ Corp No Symbol 345 54
4 Jay HR 9/30/18 A LLC AA 678 53
5 Jim Ops 9/30/16 New NaN 999 8
Doing df3 = pd.merge(df1, df2, on='ID', how='left').drop('Company_x', axis=1)
приближает меня, но не сохраняет Company
из df1
, когда совпадение не найдено в df2
(Nan
против New
):
Person Dept Date ID Value Company_y Symbol
0 Faye Sales 12/31/16 123 27 FB Inc FB
1 Faye Sales 3/31/17 123 34 FB Inc FB
2 Ray Eng 3/31/18 345 59 XYZ Corp No Symbol
3 Ray HR 6/30/18 345 54 XYZ Corp No Symbol
4 Jay HR 9/30/18 678 53 A LLC AA
5 Jim Ops 9/30/16 999 8 NaN NaN
Как сделать Я это исправлю?