У меня есть два кадра данных. Первый dataframe df
содержит 5-минутные (возвратные) данные и час и минуту индекса
import pandas as pd
dates = pd.date_range(start='2018-01-01', end='2018-01-05', freq='5T')
df = pd.DataFrame(np.random.randn(len(dates),1), index=dates, columns=list(['Ret']))
df['Hour'] = df.index.hour
df['Minute'] = df.index.minute
tmp = df['Ret'].groupby([df['Hour'],df['Minute']]).mean().to_frame()
Итак, теперь tmp
содержит мультииндексированный фрейм данных, он имеет два уровня часов и минут. Теперь я хочу создать новый столбец в df
где я выберу правильные значения из dataframe tmp
и верну их обратно в фреймворк данных df
.
Поэтому в основном я хочу создать новый столбец в df
, выполнив поиск df['Hour']
и df['Minute']
в tmp
и вернув правильное значение, но я не могу заставить его работать.
Используйте merge
, но будьте осторожны с синтаксисом:
result = df.merge(tmp, left_on=['Hour', 'Minute'], right_index=True, how='left')
result.head()
Ret_x Hour Minute Ret_y
2018-01-01 -0.751599 0 0 -0.035756
2018-01-02 -0.650874 0 0 -0.035756
2018-01-03 -1.110701 0 0 -0.035756
2018-01-04 0.944097 0 0 -0.035756
2018-01-05 1.390296 0 0 -0.035756
df.merge()