python - 基于其他数据帧的数据帧的条件填充

标签 python pandas 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 中创建一个新列我从数据帧 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/

相关文章:

javascript - JavaScript 和 Python 2.7 中 JSON 字符串中的转义反斜杠

python - 类型错误 : load_dotenv() got an unexpected keyword argument 'encoding'

python - 使用 Python 生成报告 : PDF or HTML to PDF

python - .dat 文件导入 Pandas

python - Pandas:在应用逐行函数时将一行拆分为两行或更多行

python - 在 Python Selenium 中获取 Select 元素的选项时出错

python - Pandas 数据框中的循环依赖

python - 如何选择行中的第二个最小值并返回它们各自的列名?

python - 按列对数据框进行分组并保存到不同的目录

python - 如何删除3列以上具有相同值的行