【问题标题】:How to compare dates in an array with a string of date?如何将数组中的日期与日期字符串进行比较?
【发布时间】:2020-04-10 08:45:41
【问题描述】:

我有一个 NumPy 日期字符串数组,如下所示。 我正在尝试选择所有日期

for date1 in dates[dates <= '2020-01-31']:
    print(date1)

数据看起来像这个日期数组

    1/1/2020
    1/2/2020
    1/3/2020
    1/4/2020
    1/5/2020
    2/4/2020
    .
    .
    .
    3/31/2020

【问题讨论】:

  • 数组的格式是什么?是np.datetime64?另请参阅docs
  • 这能回答你的问题吗? Converting string into datetime
  • 使用标准 ISO 格式 %Y-%m-%d 的日期,以便您可以轻松地进行字符串比较:date_array = [datetime.strptime(k, '%m/%d/%Y').strftime('%Y-%m-%d') for k in x]filtered_array = [k for k in date_array if k &lt; '2020-01-31']

标签: python numpy date


【解决方案1】:

您实际上是将它们作为字符串进行比较。根据您的要求,您可以在比较之前将它们转换为日期时间 obj 或删除 / 或 -。

from datetime import datetime as dt
dt.strptime(date, "%m/%d/%y") <= dt.strptime("10/12/13", "%m/%d/%y")

【讨论】:

  • strptime() 参数 1 必须是 str,而不是 numpy.ndarray 我收到此错误
  • 您需要像在循环中一样传递单个元素
【解决方案2】:

您应该提供完整的代码。 数组是什么意思?一个 numpy 数组、一个列表、一个 pandas 数据框?字典?

要子集日期,您需要将日期字符串转换为 datetime.date 对象

【讨论】:

  • 这是一个 numpy 日期字符串数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多