我是Python的新手,并开始意识到它可能会进行严重的数字运算 .
目前,我希望在pandas数据框(df1)中创建一个新列,并使用另一个数据帧(df2)中24列之一(名为 0.0
- 23.0
)的数值填充它 . 每列 0.0
- 23.0
代表小时数( 00.00-00.59
, 01.00-01.59
等) . 我想根据时间标准执行我的操作 .
df1中有一列 time
,日期时间值的格式为 YYYY-mm-dd HH:MM:SS
. 此列不是df1的索引列,因此多行可能具有相同的'time'值 . df1总共包含300,000行 .
df2的索引是 date
列,其中包含 YYYY-mm-dd
形式的值 . df2涵盖3年,因此总共包含大约1,200行 .
例如,如果df1中 time
的值为 2011-01-01 12:01:20
,我想在df1中使用df2中 12.0
列中的数值填充df1中的新列,对应于索引为 2011-01-01
的行 .
我试图合并两个数据帧,并获得一个包含df1的新数据帧,以及与正确日期匹配的 0.0
- 23.0
列 . 我通过将'time'转换为 YYYY-mm-dd
格式并应用.merge来完成此操作 . 但是,这个数据帧有点太乱了 .
此外,我想编写一个评估df1中新列的函数,以允许向后控制来自df2的导入值是正确的 .
DF1
KEY time
252752 2011-01-01 04:20:00
281789 2011-01-02 01:18:00
242674 2011-01-03 03:08:00
189497 2011-01-04 00:17:00
189498 2011-01-05 05:31:00
... ...
DF2
date 0.0 1.0 2.0 3.0 4.0 5.0 ... 23.0
2011-01-01 0.919355 0.925806 0.929032 0.932258 0.938710 0.953947 ... 1.037975
2011-01-02 1.026144 1.019608 1.022876 1.032680 1.035948 1.035948 ... 0.919355
2011-01-03 1.025316 1.034810 1.037975 1.034810 1.044304 1.044304 ... 1.018987
2011-01-04 1.018987 1.025316 1.031646 1.044304 1.047468 1.050633 ... 0.932258
2011-01-05 1.018987 1.018987 1.018987 1.022152 1.031646 1.037975 ... 0.953947
... ... ... ... ... ... ... ... ...
期望的结果
KEY time value
252752 2011-01-01 04:20:00 0.938710
281789 2011-01-02 01:18:00 1.019608
242674 2011-01-03 03:08:00 1.034810
189497 2011-01-04 00:17:00 1.018987
189498 2011-01-05 05:31:00 1.037975
... ... ...
1 回答
我不确定这是否有帮助...但这就是我写它的方式: