我有一个熊猫表,它显示了两个日期和它们之间的持续时间:
| date1 | date2 | duration |
+------------+------------+----------+
| 10/04/2018 | 15/05/2018 | 5 days |
| 23/04/2018 | 28/04/2018 | 5 days |
| 27/11/2018 | 28/11/2018 | 1 days |
+------------+------------+----------+
duration列由df['duration'] = df['date2'] - df['date1']
生成如果我尝试过滤持续时间低于5,例如:df.query('duration < 5')
如果试图在int类型上过滤datetime对象,则会失败。
解决这个问题的最好方法是什么?设置5作为日期时间对象?
您可以在timdelta
值上使用.dt.days
访问器来获取天数作为整数值,然后您可以将其与另一个数字进行比较。
>>> df.query('duration.dt.days < 5')
date1 date2 duration
2 2018-11-27 2018-11-28 1 days