根据日期时间值组合数据帧

Combining dataframes based on datetime values

我想根据比较时间的逻辑合并两个熊猫数据集。 我有以下两个数据集。

df1

df1 = pd.DataFrame({'Timestamp': ['2022-03-20 08:25:01', '2022-03-20 08:25:02', '2022-03-20 08:25:03', '2022-03-20 08:25:04', '2022-03-20 08:25:05', '2022-03-20 08:25:06'],
                   'Temperature': ['650', '720', '40', '30', '500', '130']})

df2

df2 = pd.DataFrame({'Testphase': ['A1', 'A2', 'A3'],
                    'Begin_time': ['2022-03-20 08:25:01', '2022-03-20 08:25:04', '2022-03-20 08:25:30'],
                   'End_time': ['2022-03-20 08:25:03', '2022-03-20 08:25:05' , '2022-03-20 08:25:35']})

期望的 df

现在我想在 df2 的 'Begin_time' 和 'End_time' 的基础上将 Testphase 添加到 df1。如果时间在这些时间之间或在这些时间之间,我想添加 'Testphase' 的值。 这是期望的结果:

df_desired = pd.DataFrame({'Timestamp': ['2022-03-20 08:25:01', '2022-03-20 08:25:02', '2022-03-20 08:25:03', '2022-03-20 08:25:04', '2022-03-20 08:25:05', '2022-03-20 08:25:06'],
                   'Testphase': ['A1', 'A1', 'A1', 'A2', 'A2', 'NAN'],
                    'Temperature': ['650', '720', '40', '30', '500', '130']})

我有两个想法

但我不知道如何实际编码。

你可以试试pd.IntervalIndex

#df2.Begin_time = pd.to_datetime(df2.Begin_time)
#df2.End_time = pd.to_datetime(df2.End_time)
df2.index = pd.IntervalIndex.from_arrays(left = df2.Begin_time,right = df2.End_time,closed='both')

df1['new'] = df2.Testphase.reindex(pd.to_datetime(df1.Timestamp)).tolist()
df1
Out[209]: 
             Timestamp Temperature  new
0  2022-03-20 08:25:01         650   A1
1  2022-03-20 08:25:02         720   A1
2  2022-03-20 08:25:03          40   A1
3  2022-03-20 08:25:04          30   A2
4  2022-03-20 08:25:05         500   A2
5  2022-03-20 08:25:06         130  NaN