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