我有一个带有多个列的pd.DataFrame'join3',如下所示:

    start   end      regstart  regend
A   01:00   03:00    02:00     02:30
B   07:00   08:00    07:30     09:00
C   12:00   13:00    15:00     17:00


现在我想过滤并仅获取那些行,这些行的间隔开始-结束与间隔regstart-regend相交。在上面的示例中,项目C将被过滤掉。

我这样做:

join4 = join3[ ((join3['regend'] > join3['start']) and (join3['regend'] < join3['end']) ) or
               ((join3['regstart'] > join3['start']) and (join3['regstart'] < join3['end']))  ]


但是我收到错误消息“ ValueError:系列ins的真值不明确。请使用a.empty,a.bool(),a.item()a.any()或a.all()。

问题是什么?

最佳答案

对于按位or|,将and更改为&,将and更改为or

join4 = join3[ ((join3['regend'] > join3['start']) &
                (join3['regend'] < join3['end']) ) |
               ((join3['regstart'] > join3['start']) &
                (join3['regstart'] < join3['end']))  ]

08-19 21:23