首页 > 解决方案 > 过滤一个熊猫列,这是两个日期之间的差异

问题描述

我有一个熊猫表,其中显示了 2 个日期和它们之间的持续时间:

|   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 |
+------------+------------+----------+

持续时间列由df['duration'] = df['date2'] - df['date1']

例如,如果我尝试过滤低于 5 的持续时间: df.query('duration < 5') 这将失败,因为它尝试过滤 int 上的日期时间对象。

解决这个问题的最佳方法是什么?将 5 设置为日期时间对象?

标签: pythonpandas

解决方案


您可以.dt.daystimdelta值使用访问器来获取天数作为整数值,然后您可以将其与另一个数字进行比较。

>>> df.query('duration.dt.days < 5')
       date1      date2 duration
2 2018-11-27 2018-11-28   1 days

推荐阅读