Pandas 将小时索引数据框与日索引数据框合并,并使用日索引数据框中的相同值填充所有行
我目前有两个数据帧,一个在Pandas 将小时索引数据框与日索引数据框合并,并使用日索引数据框中的相同值填充所有行,pandas,dataframe,datetime,merge,Pandas,Dataframe,Datetime,Merge,我目前有两个数据帧,一个在hour上索引,另一个在上索引 天 df1 col1 col2 col3 datetime 2018-03-01 10:00 1 2 3 2018-03-01 11:00 1 2 3 2018-03-01 12:00 1 2 3 df2 col4 col5 dat
hour
上索引,另一个在上索引
天
df1
col1 col2 col3
datetime
2018-03-01 10:00 1 2 3
2018-03-01 11:00 1 2 3
2018-03-01 12:00 1 2 3
df2
col4 col5
datetime
2018-03-01 10 20
2018-03-02 10 20
2018-03-03 10 20
我想合并这两个数据帧,这样我就可以将col4
和col5
中的值添加到df1中,但要确保df1上的所有行都由来自df2的相应值填充,而不仅仅是每天一行
如果我这样做:
df_merge=pd.merge(df1,df2, how='outer', left_index=True, right_index=True)
我得到:
df1
col1 col2 col3 col4 col5
datetime
2018-03-01 10:00 1 2 3 10 20
2018-03-01 11:00 1 2 3 NaN NaN
2018-03-01 12:00 1 2 3 NaN NaN...
有没有办法让我用10
和20
来填充NaN
?因此,2018-03-01
上的所有小时都应该用col4
和col5
的相同值填充
谢谢您可以使用它并将其与左侧的合并:
a = df1.index.floor('d')
df_merge=pd.merge(df1,df2, how='outer', left_on=a, right_index=True)
print (df_merge)
key_0 col1 col2 col3 col4 col5
datetime
2018-03-01 10:00:00 2018-03-01 1.0 2.0 3.0 10 20
2018-03-01 11:00:00 2018-03-01 1.0 2.0 3.0 10 20
2018-03-01 12:00:00 2018-03-01 1.0 2.0 3.0 10 20
2018-03-01 12:00:00 2018-03-02 NaN NaN NaN 10 20
2018-03-01 12:00:00 2018-03-03 NaN NaN NaN 10 20
如有必要,请删除datetimes填充的列:
a = df1.index.floor('d')
df_merge=pd.merge(df1,df2, how='outer', left_on=a, right_index=True).drop('key_0', 1)
print (df_merge)
col1 col2 col3 col4 col5
datetime
2018-03-01 10:00:00 1.0 2.0 3.0 10 20
2018-03-01 11:00:00 1.0 2.0 3.0 10 20
2018-03-01 12:00:00 1.0 2.0 3.0 10 20
2018-03-01 12:00:00 NaN NaN NaN 10 20
2018-03-01 12:00:00 NaN NaN NaN 10 20
此外,这里似乎需要左连接:
a = df1.index.floor('d')
df_merge=pd.merge(df1,df2, how='left', left_on=a, right_index=True)
print (df_merge)
col1 col2 col3 col4 col5
datetime
2018-03-01 10:00:00 1 2 3 10 20
2018-03-01 11:00:00 1 2 3 10 20
2018-03-01 12:00:00 1 2 3 10 20