我有一个带有多个列的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'])) ]