我有两个DataFrame:df1
和df2
import pandas as pd
df1 = pd.DataFrame(
{
'a': ['2024-01-01 04:00:00', '2023-02-02 20:00:00'],
'id':['a_1', 'a_2']
}
)
df2 = pd.DataFrame(
{
'a': [
'2024-01-01 4:00:00', '2024-01-01 05:00:00',
'2024-01-01 06:00:00', '2024-01-01 07:00:00',
'2024-01-01 08:00:00', '2024-01-01 09:00:00',
'2023-02-02 21:00:00', '2023-02-02 23:00:00',
]
}
)
这是预期的输出.我想把id
从df1
合并到df2
:
a id
0 2024-01-01 04:00:00 a_1
1 2024-01-01 05:00:00 a_1
2 2024-01-01 06:00:00 a_1
3 2024-01-01 07:00:00 a_1
4 2024-01-01 08:00:00 NaN
5 2024-01-01 09:00:00 NaN
6 2023-02-02 21:00:00 a_2
7 2023-02-02 23:00:00 a_2
如果你熟悉烛台,df1.a
就是4小时的烛台.例如df1.a.iloc[0]
为:
2024-01-01 04:00:00
2024-01-01 05:00:00
2024-01-01 06:00:00
2024-01-01 07:00:00
基本上它的范围是从df1.a.iloc[0]
到df1.a.iloc[0] + pd.Timedelta(hours=3)
.我想根据这些身份证覆盖的时间范围对其进行merge
次查验.
这是我的try ,但我不知道如何通过日期范围merge
:
df1['a'] = pd.to_datetime(df1.a)
df2['a'] = pd.to_datetime(df2.a)
df1['b'] = df1.a + pd.Timedelta(hours=3)