Использование:
print (df1)
stockA stockB
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 12 13 26 27 31 50 29 17
print (df2)
stockA stockB
2/1/19 1.5 3.2
3/1/19 1.2 6.2
Преобразование индекса в оба значения index
в datetime
с, если необходимо:
df1.index = pd.to_datetime(df1.index, format='%d/%m/%y')
df2.index = pd.to_datetime(df2.index, format='%d/%m/%y')
Получить одинаковые значения в обоих индексах по Index.intersection
:
idx = df1.index.intersection(df2.index)
print (idx)
DatetimeIndex(['2019-01-02'], dtype='datetime64[ns]', freq=None)
Создать MultiIndex
в MultiIndex.from_product
в df2
:
df2.columns = pd.MultiIndex.from_product([df2.columns, ['new']])
print (df2)
stockA stockB
new new
2019-01-02 1.5 3.2
2019-01-03 1.2 6.2
Фильтрация обоих фреймов данных по DataFrame.loc
, объединение по DataFrame.join
и последняя сортировка MultiIndex
по DataFrame.sort_index
:
df = df1.loc[idx].join(df2.loc[idx]).sort_index(level=0, axis=1)
print (df)
stockA stockB
C H L O new C H L O new
2019-01-02 27 26 13 12 1.5 17 29 50 31 3.2