【问题标题】:Filter dataframe by date in datetime在日期时间中按日期过滤数据框
【发布时间】:2020-11-27 08:17:05
【问题描述】:

大家早上好,

我目前正在编写一个机器人,它应该使用数据填充基于浏览器的系统。 因此,宏将数据从 excel 提取到数据框中,并且必须首先决定需要将哪些数据放入该系统。在此检查中,数据框中一列的所有日期都将根据当前日期进行检查。

enter image description here

enter image description here

当前日期 ("datetimeObj") 和列 ("Approved until incl.") 都以日期时间格式(根据我的理解)。 问题是此检查不适用于此消息: enter image description here

我尝试仅使用列中的一项进行检查,然后它正在工作: enter image description here

我希望你们中的一些人可以在这里帮助我。 提前致谢,

一切顺利! 甜瓜

【问题讨论】:

  • 您能否尝试打印列值的类型并确认它们是否都是日期时间格式而不是字符串?
  • 欢迎来到 Stackoverflow 并祝贺您的​​第一篇文章!有几条规则需要遵守。 请勿发布代码或错误消息或数据帧的图片。而是发布代码。请在此处阅读更多信息:how to provide a great pandas exampleminimal reproducible examplehow to ask a good question 并相应地编辑您的问题。
  • 好的,谢谢你的提示!
  • 我做了它告诉我该列在 dtype 对象中。

标签: python pandas dataframe datetime


【解决方案1】:

根据代码,您应该在 xlsx_import["Approved until incl."] 中有字符串

尝试跟随以查看发生了什么...

导入库:

from datetime import datetime

import pandas as pd

然后创建一个包含日期的示例字典:

date_dict = dict({'time':[datetime(2020,1,1,12,10,10),datetime(2020,1,2,12,10,10)]})

然后创建一个 pandas 数据框。这个在列值上有日期

df = pd.DataFrame(date_dict)

然后我们生成一个样本日期进行测试:

date = datetime(2020,1,1,17,10,10)

然后是最后的测试:

is_older = df['time'] < date

当这样显示时:print(is_older) 不会出错,第一项为真,第二项为假

然后我们做同样的事情,但这次使用列中包含字符串而不是日期时间的数据框:

我们生成一个新的样本字典:

date_dict = dict({'time':["2020-1-1 12:10:10","2020-1-2 12:10:10"]})

然后我们创建一个用字符串填充的新数据框:

df_str = pd.DataFrame(date_dict)

我们终于对其进行了测试:

is_older2 = df_str['time'] < date

出现您显示的错误。

【讨论】:

  • 嘿,谢谢!这帮助我解决了这个问题。问题是有一个项目是“批准直到包括”列内的一个字符串。
  • 我很高兴它有帮助! ;)
  • 您可以使用 df.info() 检查 df 列的类型,并检查它们是字符串(对象)还是日期时间。享受编码!
猜你喜欢
  • 2019-01-15
  • 2018-06-17
  • 2022-09-23
  • 1970-01-01
  • 2016-08-03
  • 2014-02-28
  • 2013-10-20
  • 2018-01-25
  • 2018-04-23
相关资源
最近更新 更多