我想将一个数据帧插入另一个具有ID为“ Time”的时间键的数据帧。怎么做?
我的数据如下:
df1
ID Time
ID1 10:40
ID1 11:00
ID2 11:10
ID2 11:30
df2
Time X Y
10:40 45 50
10:50 55 55
11:00 65 60
11:10 75 65
11:20 85 70
11:30 95 75
我的预期结果如下:
ID Time X Y
ID1 10:40 45 50
ID1 10:50 55 55
ID1 11:00 65 60
ID2 11:10 75 65
ID2 11:20 85 70
ID2 11:30 95 75
感谢您的帮助
答案 0 :(得分:1)
在日期时间列中使用merge_asof
,最后使用Series.dt.strftime
将其转换为HH:MM
字符串:
df1['Time'] = pd.to_datetime(df1['Time'])
df2['Time'] = pd.to_datetime(df2['Time'])
df = pd.merge_asof(df2, df1, on='Time').assign(Time = lambda x: x['Time'].dt.strftime('%H:%M'))
print (df)
Time X Y ID
0 10:40 45 50 ID1
1 10:50 55 55 ID1
2 11:00 65 60 ID1
3 11:10 75 65 ID2
4 11:20 85 70 ID2
5 11:30 95 75 ID2