我有一个带有datetimeindex的普通数据帧.(df1)

df1:

                     Open     High     Low      Close       volume
datetime                                                       
2021-07-07 00:00:00  4328.00  4328.75  4327.50  4328.75     774
2021-07-07 00:05:00  4328.75  4330.00  4328.75  4329.50     462
2021-07-07 00:10:00  4329.50  4329.50  4328.75  4329.25     344
2021-07-07 00:15:00  4329.50  4330.50  4329.50  4330.50     423
2021-07-07 00:20:00  4330.50  4330.75  4330.00  4330.50     458
...                      ...      ...      ...      ...     ...
2022-07-06 21:35:00  3871.50  3875.00  3865.50  3866.75   19667
2022-07-06 21:40:00  3866.75  3867.00  3861.00  3862.50   19962
2022-07-06 21:45:00  3862.25  3862.25  3855.00  3857.75   20707
2022-07-06 21:50:00  3857.75  3860.00  3841.00  3843.50   41929
2022-07-06 21:55:00  3843.75  3850.00  3842.00  3849.50   56018

df2:

2021-07-07    4347.50
2021-07-08    4301.25
2021-07-09    4349.25
2021-07-10        NaN
2021-07-11        NaN
2021-07-12    4372.50
2021-07-13    4379.25
2021-07-14    4384.50
2021-07-15    4360.75
2021-07-16    4365.75
2021-07-17        NaN
2021-07-18        NaN
2021-07-19    4272.00
2021-07-20    4299.50
2021-07-21    4342.00
2021-07-22    4355.25
2021-07-23    4381.25
2021-07-24        NaN
2021-07-25        NaN
2021-07-26    4407.25
2021-07-27    4404.00
.....

期望输出:

                     Open     High     Low      Close       volume  newcol
datetime                                                       
2021-07-07 00:00:00  4328.00  4328.75  4327.50  4328.75     774     4347.50
2021-07-07 00:05:00  4328.75  4330.00  4328.75  4329.50     462     4347.50
2021-07-07 00:10:00  4329.50  4329.50  4328.75  4329.25     344     4347.50
2021-07-07 00:15:00  4329.50  4330.50  4329.50  4330.50     423     4347.50
2021-07-07 00:20:00  4330.50  4330.75  4330.00  4330.50     458     4347.50
...                      ...      ...      ...      ...     ...

有什么办法吗?

推荐答案

使用DatetimeIndex.normalize表示删除时间,因此可能通过Index.map映射另一个数据帧:

df1['newcol'] = df1.index.normalize().map(df2['col'])

#if in df2 are columns date, col
#df1['newcol'] = df1.index.normalize().map(df2.set_index('date')['col'])
print (df1)
                        Open     High      Low    Close  volume  newcol
datetime                                                               
2021-07-07 00:00:00  4328.00  4328.75  4327.50  4328.75     774  4347.5
2021-07-07 00:05:00  4328.75  4330.00  4328.75  4329.50     462  4347.5
2021-07-07 00:10:00  4329.50  4329.50  4328.75  4329.25     344  4347.5
2021-07-07 00:15:00  4329.50  4330.50  4329.50  4330.50     423  4347.5
2021-07-07 00:20:00  4330.50  4330.75  4330.00  4330.50     458  4347.5
2022-07-06 21:35:00  3871.50  3875.00  3865.50  3866.75   19667     NaN
2022-07-06 21:40:00  3866.75  3867.00  3861.00  3862.50   19962     NaN
2022-07-06 21:45:00  3862.25  3862.25  3855.00  3857.75   20707     NaN
2022-07-06 21:50:00  3857.75  3860.00  3841.00  3843.50   41929     NaN
2022-07-06 21:55:00  3843.75  3850.00  3842.00  3849.50   56018     NaN

Python相关问答推荐

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

如何在WSL2中更新Python到最新版本(3.12.2)?

梯度下降:简化要素集的运行时间比原始要素集长

计算分布的标准差

如何启动下载并在不击中磁盘的情况下呈现响应?

Django—cte给出:QuerySet对象没有属性with_cte''''

Flash只从html表单中获取一个值

数据框,如果值在范围内,则获取范围和

有没有办法在不先将文件写入内存的情况下做到这一点?

如何使用pytest在traceback中找到特定的异常

为罕见情况下的回退None值键入

如何在Python中从html页面中提取html链接?

在round函数中使用列值

大型稀疏CSR二进制矩阵乘法结果中的错误

在MongoDB文档中仅返回数组字段

如何将验证器应用于PYDANC2中的EACHY_ITEM?

了解如何让库认识到我具有所需的依赖项

GEKKO中若干参数的线性插值动态优化

Pandas:新列,从列表中采样,基于列值

Django/Python-UpdateView中的Delete函数正在复制,而不是删除