pandas DataFrame上的时间过滤器

时间:2017-07-22 11:08:12

标签: python pandas filtering

我有一个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()。

有什么问题?

1 个答案:

答案 0 :(得分:1)

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

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