Вы можете использовать .join()
и .rename()
:
position.join(data, on=['Date','Symbol']).rename(columns={'Open': 'Open_price'})
Вот полный пример:
data = pd.DataFrame([['08-02-2018', 'NDA', 0.123], ['08-02-2018','DFA', 0.234],
['08-03-2018', 'NFX', 0.451], ['08-04-2018', 'BBA', 0.453]],
columns=['Date', 'Symbol', 'Open']).set_index(['Date', 'Symbol'])
position = pd.DataFrame([['08-02-2018', 'NDA'],['08-03-2018', 'NFX'],
['08-04-2018', 'TYA'],['08-04-2018', 'BBA']],
columns=['Date', 'Symbol']).set_index(['Date'])
data.index = data.index.set_levels([pd.to_datetime(data.index.levels[0]), data.index.levels[1]])
position.index = pd.to_datetime(position.index)
position = position.join(data, on=['Date','Symbol']).rename(columns={'Open': 'Open_price'})
Что дает:
данные
Open
Date Symbol
2018-08-02 NDA 0.123
DFA 0.234
2018-08-03 NFX 0.451
2018-08-04 BBA 0.453
положение
Symbol
Date
2018-08-02 NDA
2018-08-03 NFX
2018-08-04 TYA
2018-08-04 BBA
Использование вышеупомянутого .join()
и печать position
дает:
Symbol Open
Date
2018-08-02 NDA 0.123
2018-08-03 NFX 0.451
2018-08-04 TYA NaN
2018-08-04 BBA 0.453