python - DateTime 过滤器返回错误的结果
问题描述
我有以下数据框“df”:
DateTime
2019-03-07 23:00:00
2019-03-07 23:10:00
2019-03-08 23:10:00
2019-03-09 23:10:00
2019-03-10 23:10:00
2019-03-11 23:10:00
2019-03-12 23:10:00
df.dtypes:
DateTime datetime64[ns]
我需要在“2019-03-11”之前返回行。这是我当前的代码:
value_to_check = pd.Timestamp(2019, 3, 11)
df["DateTime"] = pd.to_datetime(df["DateTime"])
df[df["DateTime"]<value_to_check]
# OR
df.query('DateTime < "2019-03-11 00:00:00"').tail()
由于某种原因,它返回错误的结果(缺少“2019-03-10 23:10:00”):
2019-03-07 23:00:00
2019-03-07 23:10:00
2019-03-08 23:10:00
2019-03-09 23:10:00
但令人惊讶的是,如果我将日期限制更改为低于 10 的任何数字,例如“2019-03-08 00:00:00”,它会很好地工作。
解决方案
将DateTime
列与字符串进行比较有效:
>>> df[df['DateTime'] < '2019-03-11']
DateTime
0 2019-03-07 23:00:00
1 2019-03-07 23:10:00
2 2019-03-08 23:10:00
3 2019-03-09 23:10:00
4 2019-03-10 23:10:00
这也有效:
df[df['DateTime'] < pd.Timestamp(2019, 3, 11)]
df.query('DateTime < "2019-03-11 00:00:00"')
你的 Python 和 Pandas 版本是什么?
推荐阅读
- jquery - jquery禁用隐藏div中的输入字段
- java - 如何通过反转数字来计算数字,并输出一个新数字
- android - andorid房间内连接表中的一列
- android - 如何从 Flutter 中的 url 下载 mp3 音乐并将其保存在 Gallery-Movies 文件夹或其他文件夹中?
- postgresql - 为每个数组项插入一行——对于许多数组
- python - Sympy奇怪的积分输出
- java - App Engine 使用 Gradle 解决了战争文件夹问题
- java - 在 Java 中缓存数据
- clickhouse - 在 Clickhouse 中使用正确的小计实现重叠 GROUP BY 组的方法
- javascript - 我如何制作一个 wordpress 插件以在静态网站上工作