【问题标题】:How to play around with JSON date format?如何使用 JSON 日期格式?
【发布时间】:2019-10-29 11:24:05
【问题描述】:

我有一个 JSON 日期数据集,并试图计算两个不同 JSON DateTime 之间的时间差。

例如:

'2015-01-28T21:41:38.508275' - '2015-01-28T21:41:34.921589'

请看下面的python代码:

#let's say 'time' is my data frame and JSON formatted time values are under the 'due_date' column
time_spent = time.iloc[2]['due_date'] - time.iloc[10]['due_date']

这不起作用。我也尝试将每个操作数转换为 int,但它也没有帮助。执行此计算的不同方法是什么?

【问题讨论】:

  • 它们实际上只是字符串。尝试将它们转换为datetime
  • 就像@JoYSword 所说,没有json日期格式这样的东西:json.org

标签: python json data-science


【解决方案1】:

我使用 dateutil 的解析器。

类似的东西:

from dateutil.parser import parse

first_date_obj = parse("2015-01-28T21:41:38.508275")
second_date_obj = parse("2015-02-28T21:41:38.508275")
print(second_date_obj - first_date_obj)

您还可以像这样访问日期对象的年、月、日:

print(first_date_obj.year)
print(first_date_obj.month)
print(first_date_obj.day)
# and so on

【讨论】:

    【解决方案2】:
    from datetime import datetime
    
    date_format = '%Y-%m-%dT%H:%M:%S.%f'
    
    d2 = time.iloc[2]['due_date']
    d1 = time.iloc[10]['due_date']
    
    time_spent = datetime.strptime(d2, date_format) - datetime.strptime(d1, date_format)
    
    print(time_spent.days) # 0
    print(time_spent.microseconds) # 586686
    print(time_spent.seconds) # 3
    print(time_spent.total_seconds()) # 3.586686
    

    【讨论】:

    • 当我尝试使用你的代码时,它给了我以下错误:模块 'datetime' has noo attribute 'strptime'
    • @MertZamir 我想你是import datetime,如果你是这样导入的,你可以使用datetime.datetime.strptime()。我认为您面对这个error 并检查已验证的answer
    【解决方案3】:

    最简单的做法是使用 pandas 日期时间功能(因为您已经在使用 iloc,所以我假设您正在使用 pandas)。您可以使用

    将标有due_date的整个数据框列转换为熊猫日期时间数据类型
    import pandas as pd
    time['due_date'] = pd.to_datetime(time['due_date']
    

    然后计算你想要使用的时间差

    time_spent = time.iloc[2]['due_date'] - time.iloc[10]['due_date']
    

    time_spent 将是一个 pandas timedelta 对象,您可以根据需要对其进行操作。

    参见https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.htmlhttps://pandas.pydata.org/pandas-docs/stable/user_guide/timedeltas.html

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 2021-12-15
      • 1970-01-01
      • 2010-11-24
      • 2021-09-18
      • 1970-01-01
      相关资源
      最近更新 更多