Pandas 合并 DateTimeIndex 的特定属性

Pandas Merge on Specific Attributes of DateTimeIndex

我目前有两个 pandas 数据框,它们都使用 pandas DateTimeIndex 格式进行索引。

df1 
datetimeindex         value
2014-01-01 00:00:00   204.501667
2014-01-01 01:00:00   125.345000
2014-01-01 02:00:00   119.660000

df2 (where the year 1900 is a filler year I added during import. Actual year does not matter)
datetimeindex         temperature
1900-01-01 00:00:00   48.2
1900-01-01 01:00:00   30.2
1900-01-01 02:00:00   42.8

我想使用 pd.merge 根据左侧索引组合数据框,但是,我想完全忽略年份以产生此结果:

merged_df 
datetimeindex        value        temperature
2014-01-01 00:00:00  204.501667   48.2
2014-01-01 01:00:00  125.345000   30.2
2014-01-01 02:00:00  119.660000   42.8

到目前为止我已经尝试过:

merged_df = pd.merge(df1,df2,left_on =
['df1.index.month','df1.index.day','df1,index.hour'],right_on = 
['df2.index.month','df2.index.day','df2.index.hour'],how = 'left')

这给了我错误 KeyError: 'df2.index.month'

有没有办法按照我概述的方式执行此合并?

谢谢

引号L你得输

In [11]: pd.merge(df1, df2, left_on=[df1.index.month, df1.index.day, df1.index.hour],
                            right_on=[df2.index.month, df2.index.day, df2.index.hour])
Out[11]:
   key_0  key_1  key_2       value  temperature
0      1      1      0  204.501667         48.2
1      1      1      1  125.345000         30.2
2      1      1      2  119.660000         42.8

这里 "df2.index.month" 是一个字符串,而 df2.index.month 是月份数组。

可能效率不高,因为 pd.to_datetime 可能很慢:

df2['NewIndex'] = pd.to_datetime(df2.index)
df2['NewIndex'] = df2['NewIndex'].apply(lambda x: x.replace(year=2014))
df2.set_index('NewIndex',inplace=True)

然后对整个索引进行合并。