如何根据完全匹配的日期值过滤熊猫数据框

新手上路,请多包涵

我一直在尝试针对特定日期过滤我的数据框,尽管日期存在于数据框中,但它不返回任何结果

基于查询的数据框中的数据

df[df['Date'] > '2017-03-20']

返回此结果

StaffID     Date
90047   2017-03-20 19:00:00
90049   2017-03-20 19:00:00
90049   2017-03-27 19:00:00

虽然当我运行这个查询

df[df['Date'] == '2017-03-20']

或者

df.loc[df['Date'] == '2017-03-20']

它根本没有返回任何结果只是一个空数据框

StaffID     Date

我的数据框列类型是

StaffID                int64
Date          datetime64[ns]

我已经通过比较数据帧日期和字符串以及将 字符串日期 转换为 datetime64[ns] 来尝试上面的查询,结果仍然相同,请提供任何帮助,我们将不胜感激

原文由 Waqar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 462
2 个回答

使用 dt.date astype string 然后比较 ie

 df[df['Date'].dt.date.astype(str) == '2017-03-20']

输出:

  员工编号日期
0 90047 2017-03-20 19:00:00
1 90049 2017-03-20 19:00:00

原文由 Bharath M Shetty 发布,翻译遵循 CC BY-SA 3.0 许可协议

我使用的日期是 “2017-03-20 19:00:00” ,它大于 “2017-03-20 00:00:00”, 这就是为什么它没有正确比较它的最佳方法是

df.Date = df.Date.dt.date
dateToMatch = np.datetime64('2017-03-20')
df[df.Date == dateToMath]

以上代码返回

   StaffID     Date
0   90047   2017-03-20
1   90049   2017-03-20

这只会从我的日期列中提取日期并替换有时间的旧列

信用:在评论中回答我的温。

原文由 Waqar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题