我正在编写一个函数,该函数带有一个vendorID和一个date_time字符串,如果在完成交付的时间/日期不重叠的情况下可以返回vendorID,则应该返回该字符串。
我正在尝试比较字典中的日期时间字符串,该字典包含嵌套字典的列表以及各种元素,包括日期时间字符串。我想比较列表中每个嵌套字典的每个日期时间字符串,并检查日期是否不同,然后比较是否经过了一定的分钟数。
试图遍历字典和项目,并使用datetime.strptime()解析日期时间字符串,但是我不确定在遍历字典项目时如何比较字典列表中的日期。
dict = {
"results": [
{
"vendor_id": 1,
"client_id": 10,
"datetime": "2017-01-01 13:30:00"
},
{
"vendor_id": 1,
"client_id": 40,
"datetime": "2017-01-01 14:30:00"
}
答案 0 :(得分:0)
您可以将string
类型的时间更改为datetime
类型的时间。
并且,只需使用-
。
之后,如果您处理更多时间,则可以使用timedelta
函数返回的内容。
如果您想获取分钟,请使用time_diff
属性。
seconds
答案 1 :(得分:0)
希望这对您有所帮助。
按照您的建议使用dict;
dict = {
"results": [
{
"vendor_id": 1,
"client_id": 10,
"datetime": "2017-01-01 13:30:00"
},
{
"vendor_id": 1,
"client_id": 40,
"datetime": "2017-01-01 14:30:00"
}]}
有一些日期时间,请使用for循环并测试是否;
somedatetime1 = '2017-01-01 14:00:00'
somedatetime2 = '2017-01-01 15:00:00'
for d in dict['results']:
if d['datetime'] < somedatetime1:
print('somedatetime1 :: Vendor {} Client {} DateTime {}'.format(d['vendor_id'], d['client_id'], d['datetime']))
if d['datetime'] < somedatetime2:
print('somedatetime2 :: Vendor {} Client {} DateTime {}'.format(d['vendor_id'], d['client_id'], d['datetime']))
返回;
somedatetime1 ::供应商1客户端10 DateTime 2017-01-01 13:30:00
somedatetime2 ::供应商1客户端10日期时间2017-01-01 13:30:00
somedatetime2 ::供应商1客户端40日期时间2017-01-01 14:30:00
答案 2 :(得分:0)
我认为在熊猫中执行此操作会更容易,因为您可以按供应商ID分组并仅对该供应商执行操作。
from sklearn.metrics.pairwise import euclidean_distances
import pandas as pd
import numpy as np
df = pd.DataFrame() #Initiate
grp = df.from_dict(dict['results']).groupby('vendor_id') #Convert into df and groupby vendor id, should be useful when u have more than one vendor
dct = {}
for group in grp.groups:
df_vid = grp.get_group(group) # Obtain data for that vendor
df_vid['datetime'] = pd.to_datetime(df_vid['datetime'])
ab = np.array(df_vid['datetime'])
dist = euclidean_distances(ab.reshape(-1, 1), ab.reshape(-1, 1)) # Find distance matrix
dct[group] = dist # Assign it to dict by vendor ID as key