Python 如何比较两个不同数据帧中的日期时间

Python 如何比较两个不同数据帧中的日期时间,python,pandas,Python,Pandas,我有两个不同的数据帧,如下所示: time .. ... 2019-05-01 10:50:21 2019-05-01 10:50:22 2019-05-01 10:50:23 .. 和同一行的另一个: from to 2019-05-01 10:50:21 2019-05-01 10:55:21 我从两个不同的.csv导入数据帧,并用pd.to_datetime转换时间戳 我想删除df1中的所有单元格,其中df1.time包含在df1.from和df2.to中 if df1.time

我有两个不同的数据帧,如下所示:

time  .. ...
2019-05-01 10:50:21
2019-05-01 10:50:22
2019-05-01 10:50:23
..
和同一行的另一个:

from  to
2019-05-01 10:50:21 2019-05-01 10:55:21
我从两个不同的.csv导入数据帧,并用pd.to_datetime转换时间戳

我想删除df1中的所有单元格,其中df1.time包含在df1.from和df2.to中

if df1.time > df2.from and df2.time < df2.to
  delete
如果df1.time>df2.from和df2.time
我怎样才能继续


谢谢

假设您的第一个数据帧开始于
2019-05-01 10:50:21
,结束于
2019-05-01 10:55:30
。让我们在这里创建两个数据帧:

将熊猫作为pd导入
a=pd.日期范围(“2019-05-01 10:50:21”,“2019-05-01 10:55:50”,频率为“)
df1=pd.DataFrame({'time':a})
df2=pd.DataFrame({
“自”:[“2019-05-01 10:50:21”,“2019-05-01 10:55:30”],
“致”:[“2019-05-01 10:55:21”,“2019-05-01 10:55:45”],
索引=[0,1]
).应用(lambda s:pd.to_datetime)
我们可以使用
date\u范围
创建每个中间日期时间值,然后检查第一个数据帧的每个值是否属于此范围:

dt_ranges=[df2.iterrows()中的_行的pd.date_ranges(行['from'],行['to'],频率='s')]
dt_rng=pd.concat([dt_范围内ix的pd.Series(ix)])
掩码=df1.isin(dt_rng.值)
filtered=df1[~mask].dropna()
打印(过滤)
时间
301 2019-05-01 10:55:22
302 2019-05-01 10:55:23
303 2019-05-01 10:55:24
304 2019-05-01 10:55:25
305 2019-05-01 10:55:26
306 2019-05-01 10:55:27
307 2019-05-01 10:55:28
308 2019-05-01 10:55:29
325 2019-05-01 10:55:46
326 2019-05-01 10:55:47
327 2019-05-01 10:55:48
328 2019-05-01 10:55:49
329 2019-05-01 10:55:50

对不起,我的问题解释得更好。在df1.time中,每秒钟有一行,持续24小时,我想删除df2的每一行的df2.from和df2.to间隔中包含的df1中的所有单元格。@andrea_r94好的,我明白了,那么它只适用于多个范围。我正在编辑answer@andrea_r94我编辑了答案以考虑多行df2。