У меня есть два кадра данных:
df1
Date ID Company Symbol Shares Value
0 2014-09-30 32511907 foo NaN 10 101
1 2014-09-30 32511957 bar No Symbol 10 101
2 2014-12-31 32511907 test No Symbol 18 152
3 2013-06-30 32511107 AA APC 43 373
4 2014-06-30 166764100 CC CVX 29 381
5 2014-09-30 166764900 C No Symbol 13 155
6 2014-09-30 166764950 C Inc No Symbol 13 155
7 2015-09-30 475643276 Test NaN 13 155
И df2
:
Company ID Symbol
0 AA Inc 32511907 AAA
1 AA Inc 32511957 No Symbol
2 BB Inc 32511107 APC
3 CC Corp 166764100 CVX
4 CC Inc 166764900 No Symbol
5 CC Inc 166764950 No Symbol
Используя ID
в качестве ключа, я нужно заменить Symbol
и Company
в df1
на те, что в df2
, чтобы выходные данные выглядели так:
Date ID Company Symbol Shares Value
0 2014-09-30 32511907 AA Inc AAA 10 101
1 2014-09-30 32511957 AA Inc No Symbol 10 101
2 2014-12-31 32511907 AA Inc AAA 18 152
3 2013-06-30 32511107 BB Inc APC 43 373
4 2014-06-30 166764100 CC Corp CVX 29 381
5 2014-09-30 166764900 CC Inc No Symbol 13 155
6 2014-09-30 166764950 CC Inc No Symbol 13 155
7 2015-09-30 475643276 Test NaN 13 155
Я пробовал:
df = df1.set_index('ID')
df.update(df2.set_index('ID'))
df = df1.loc[df1.Symbol == '', ['Company', 'Symbol']] = df.reset_index()
Но при выполнении с полным набором данных я получаю ValueError: cannot reindex from a duplicate axis
, потому что строка df.update(df2.set_index('ID'))
делает индекс ID
, что приводит к нескольким дубликатам.
Так есть ли альтернативы для достижения желаемого результата?