我有一个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
现在我想过滤并只获取那些Interval起始端与regstart-regend间隔相交的行。在上面的示例中,将过滤掉项目C.
我这样做:
join4 = join3[ ((join3['regend'] > join3['start']) and (join3['regend'] < join3['end']) ) or
((join3['regstart'] > join3['start']) and (join3['regstart'] < join3['end'])) ]
但是我得到了错误&#34; ValueError:系列的真值是模棱两可的。使用a.empty,a.bool(),a.item()a.any()或a.all()。
有什么问题?
答案 0 :(得分:1)
按位or
和|
将and
更改为&
,将and
更改为or
。
join4 = join3[ ((join3['regend'] > join3['start']) &
(join3['regend'] < join3['end']) ) |
((join3['regstart'] > join3['start']) &
(join3['regstart'] < join3['end'])) ]