我有两个数据框。第一个数据框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
中创建一个新列我从数据帧 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
关于python - 基于其他数据帧的数据帧的条件填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52523462/