python - 如何将值从熊猫数据帧填充到另一个具有不同日期时间索引的数据帧
问题描述
我有两个数据框。一个有 5 分钟的粒度 (df1),另一个按天索引 (df2)。在本例中,日期在 7:10 结束
df1:
Date Close
2019-06-20 07:00:00 2927.25
2019-06-20 07:05:00 2927.00
2019-06-20 07:10:00 2926.75
2019-06-21 07:00:00 2932.25
2019-06-21 07:05:00 2932.25
2019-06-21 07:10:00 2931.00
2019-06-24 07:00:00 2941.75
2019-06-24 07:05:00 2942.25
2019-06-24 07:10:00 2941.50
2019-06-25 07:00:00 2925.50
2019-06-25 07:05:00 2926.50
2019-06-25 07:10:00 2926.50
df2:
range
Date
2019-06-20 115.0
2019-06-21 86.0
2019-06-24 52.0
2019-06-25 132.0
现在我想从 df2 的“范围”列中获取值,并将它们重复地注入到 df1 的新列中。
它应该如下所示:
Date Close range
2019-06-20 07:00:00 2927.25 115.0
2019-06-20 07:05:00 2927.00 115.0
2019-06-20 07:10:00 2926.75 115.0
2019-06-21 07:00:00 2932.25 86.0
2019-06-21 07:05:00 2932.25 86.0
2019-06-21 07:10:00 2931.00 86.0
2019-06-24 07:00:00 2941.75 52.0
2019-06-24 07:05:00 2942.25 52.0
2019-06-24 07:10:00 2941.50 52.0
2019-06-25 07:00:00 2925.50 132.0
2019-06-25 07:05:00 2926.50 132.0
2019-06-25 07:10:00 2926.50 132.0
不幸的是我不知道如何开始这就是为什么没有“我的尝试”代码你会怎么做?
解决方案
首先将日期类列转换为熊猫日期时间序列:
df1['Date'] = pd.to_datetime(df1['Date'])
df2.index = pd.to_datetime(df2.index)
使用Series.dt.date
+将值从Series.map
映射到:range
df2
df1
df1['range'] = df1['Date'].dt.date.map(df2.set_index(df2.index.date)['range'])
或者它也可以使用DataFrame.merge
:
df1.assign(k=df1['Date'].dt.date).merge(df2.assign(k=df2.index.date), on='k').drop('k', 1)
结果:
Date Close range
0 2019-06-20 07:00:00 2927.25 115.0
1 2019-06-20 07:05:00 2927.00 115.0
2 2019-06-20 07:10:00 2926.75 115.0
3 2019-06-21 07:00:00 2932.25 86.0
4 2019-06-21 07:05:00 2932.25 86.0
5 2019-06-21 07:10:00 2931.00 86.0
6 2019-06-24 07:00:00 2941.75 52.0
7 2019-06-24 07:05:00 2942.25 52.0
8 2019-06-24 07:10:00 2941.50 52.0
9 2019-06-25 07:00:00 2925.50 132.0
10 2019-06-25 07:05:00 2926.50 132.0
11 2019-06-25 07:10:00 2926.50 132.0
推荐阅读
- r - 在 Leaflet R 中单击时圆圈标记闪烁
- powershell - 传递代理并在系统 PowerShell 中运行时连接 Exchange Online 失败 - TokenProvider 返回对象引用错误
- python - 迭代器操作数 0 dtype 无法从 dtype('
我试图通过编写代码来形成 Black-Scholes 模型,但发生了错误。
from scipy import stats import numpy as np import pandas as pd import matplot
- javascript - 在javascript中将ISO时间戳转换为UTC时间戳
- groovy - Groovy:从字符串末尾删除特定字符
- python - 代码在 pyCharm 中运行,但在 Visual Studio Code 中不运行
- arrays - 如何使用数组通过指针查找平均值、最小值和最大值
- python - 如何合并两个以上的列并导出到 csv?
- firebase - Google Cloud Platform:Cloud Functions 和 Cloud Tasks 不适用于授权服务帐号电子邮件
- while-loop - 这个只运行一次的循环的时间复杂度是多少?