首页 > 解决方案 > Python替换具有不同长度和索引类型的数据帧之间的值

问题描述

我在下面有两个时间序列。df1有一个带有“月”列的 tz 感知日期时间索引。df2具有每月的最大小时数,月份成为索引。

df1

    Month
Timestamp       
2009-01-08 00:00:00+09:30   1
2009-01-09 00:00:00+09:30   1
2009-01-10 00:00:00+09:30   1
2009-04-09 00:00:00+09:30   4
2009-04-13 00:00:00+09:30   4
2009-04-15 00:00:00+09:30   4
2009-10-12 00:00:00+09:30   10
2009-10-16 00:00:00+09:30   10
2009-10-21 00:00:00+09:30   10

df2

    Hour
Month   
1   10
4   9
10  3

我想返回df1一个新列“MaxHour”,其值取自 df2 中相应月份的 Hour 列。最终结果应该如下所示。

    Month MaxHour
Timestamp       
2009-01-08 00:00:00+09:30   1 10
2009-01-09 00:00:00+09:30   1 10
2009-01-10 00:00:00+09:30   1 10
2009-04-09 00:00:00+09:30   4 9
2009-04-13 00:00:00+09:30   4 9
2009-04-15 00:00:00+09:30   4 9
2009-10-12 00:00:00+09:30   10 3
2009-10-16 00:00:00+09:30   10 3
2009-10-21 00:00:00+09:30   10 3

我确实喜欢这样:

df1['MaxHour'] =  df1.loc[df1.Month.isin(df2.index), ['Hour']]

产生与我想要的不同的结果。

标签: pythonpandas

解决方案


推荐阅读