【问题标题】:Want to find difference, in days, between two dates, of different date format, in Python想在 Python 中找到不同日期格式的两个日期之间的天数差异
【发布时间】:2018-07-15 14:14:42
【问题描述】:

我使用 SQL 查询从数据库中提取了两个不同的日期。我希望在 Python 中进行转换,但我想使用的两个主要日期以不同的格式存储。第一个日期是日期格式 (YYYY/MM/DD),另一个是 (YYYY/MM/DD HH:MM:SS) 格式。我希望天数有所不同,因此 DATETIME 与第二个日期无关。我想知道在 python 中最简单的方法是什么?理想情况下,我想自动执行此操作,在其中创建 DATETIME 变量的 DATE 格式,并获取两个 DATES 之间的差异。

我尝试了以下方法,但由于我正在处理 Series,因此我也遇到了错误。我正在尝试获取每一行的增量。

df.delta = (df.DATETIME - df.DATE)

df.delta = datetime.timedelta(df.DATETIME - df.DATE)

【问题讨论】:

  • 我已经尝试了以下方法,但由于我正在处理系列,所以我也遇到了错误 - 这些错误是什么 - 你能提供你正在使用的示例数据吗?
  • 我得到的最常见错误如下:“timedelta 秒组件的类型不受支持:系列”以及“无法将系列转换为
  • 或许可以试试df.delta = df.apply(lambda x: (x['DATETIME'] - x['DATE']).days, axis=1)
  • 您是否尝试过将日期时间转换为日期? stackoverflow.com/questions/3743222/…
  • 我试过了,但我见过的大多数解决方案都是处理“对象”而不是“系列”,因此在尝试时出现以下错误:描述符“日期”需要“日期时间.日期时间” ' 对象,但收到了一个 '系列'

标签: python date datetime format timedelta


【解决方案1】:

将您的日期时间对象转换为日期对象,然后您可以减去它们以获得增量值。

df.delta = (df.DATETIME.date() - df.DATE)

【讨论】:

    【解决方案2】:
    import datetime
    
    d1 = datetime.datetime.strptime('2018/01/13', '%Y/%m/%d')
    d2 = datetime.datetime.strptime('2018/01/15 18:34:02', '%Y/%m/%d %H:%M:%S')
    delta = d2 - d1
    print delta.total_seconds()
    print delta.days
    

    【讨论】:

    • 编辑显示天数。我不知道他想用熊猫
    • 我过去曾尝试过此解决方案,但我无法超越的是如何将其应用于整个系列,上面给了我以下信息:strptime() 参数 1 必须是字符串,而不是系列
    • 请用英文解释您的解决方案。理解代码的人不会从答案中受益(因为查找是微不足道的,如果你知道要查找什么)。
    • 感谢大家的帮助,我明白你的意思@jpaugh。我在真正理解我的问题时遇到了问题,因为它原来是多种事物的组合。最后我稍微修改了上述解决方案中的代码,我得到了适当的格式。
    • @mitch 我没有和你说话,所以我不确定你的意思。不过,我很高兴你有一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2011-03-20
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多