首页 > 解决方案 > 合并 DateTimeIndex 上的两个数据框,忽略年份

问题描述

我有两个数据框,一个是一系列测量值,

A = ID                 Value
2020-01-01 00:00:00    0.2
2020-01-01 01:00:00    0.2
                      ...
2020-12-31 22:00:00    0.6
2020-12-31 23:00:00    0.5
2021-01-01 00:00:00    0.4
2021-01-01 01:00:00    0.3
                      ...
2021-12-31 22:00:00    0.3
2021-12-31 23:00:00    0.2

另一个是缩放值,每年都相同,但可以使用特定年份的 DateTimeIndex。

B = ID                 Value
2020-01-01 00:00:00    2
2020-01-01 01:00:00    3
                      ...
2020-12-31 22:00:00    10
2020-12-31 23:00:00    11

有没有办法合并两个数据集,忽略第二个数据集的年份以获得这样的数据框:

A = ID                 ValueA  ValueB
2020-01-01 00:00:00    0.2     2
2020-01-01 01:00:00    0.2     3
                      ...
2020-12-31 22:00:00    0.6     10
2020-12-31 23:00:00    0.5     11
2021-01-01 00:00:00    0.4     2
2021-01-01 01:00:00    0.3     3
                      ...
2021-12-31 22:00:00    0.3     10
2021-12-31 23:00:00    0.2     11

标签: pythonpandasdataframemerge

解决方案


DataFrame.merge与定义的左连接和辅助列一起使用DatetimeIndex.strftime

df = (df1.assign(time=df.index.strftime('%m-%d %H:%M:%S'))
         .merge(df2.assign(time=df2.index.strftime('%m-%d %H:%M:%S')), 
                    on='time', how='left', suffixes=('A','B'))
         .drop('time', axis=1))

推荐阅读