如何使用JSON日期格式?

时间:2019-06-14 20:19:45

标签: python json data-science

我有一个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,但这也没有帮助。进行此计算有哪些不同的方法?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

将标记为Due_date的整个数据框列转换为熊猫的datetime数据类型。
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将是一个熊猫timedelta对象,您可以根据需要对其进行操作。

请参见See resulting screenshot here.https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html