Python 通过CSV文件查找不同列中的时间差

Python 通过CSV文件查找不同列中的时间差,python,csv,datetime,time,import-from-csv,Python,Csv,Datetime,Time,Import From Csv,所以,我已经尝试过好几次了;这是我最近的一次尝试: import csv import collections import datetime print "Please type file name to open:" fileName = raw_input('> ') print "" incidents = collections.Counter() with open(fileName) as input_file: for row in csv.reader(in

所以,我已经尝试过好几次了;这是我最近的一次尝试:

import csv
import collections
import datetime

print "Please type file name to open:"
fileName = raw_input('> ')
print ""


incidents = collections.Counter()
with open(fileName) as input_file:
    for row in csv.reader(input_file, delimiter=','):       
        d0 = str(incidents[row[8]])
        d1 = str(incidents[row[7]])
        date0 = datetime.datetime.strptime(d0, "%Y/%m/%d %H:%M:%S").date()
        date1 = datetime.datetime.strptime(d1, "%Y/%m/%d %H:%M:%S").date()
        delta = (date0 - date1).days
        print delta
基本上,我有一个包含两列数据的CSV文件。这两个日期的格式为:“2014年1月21日上午10:51”。我需要能够把日期的差异转换成十进制

例如,如果第1列第1行为“1/21/2014 10:51 AM”,第2列第1行为“9/4/2012 2:56:29 AM”。那么最终输出应该是“504.33”


如果需要,我可以发布其他尝试/更深入的解释。

如果您的日期时间戳实际上是一致的(并且没有丢失秒数,如您的
“1/21/2014 10:51 AM”
示例),那么您需要使用正确的格式来解析时间戳:

date0 = datetime.datetime.strptime(d0, '%m/%d/%Y %I:%M:%S %p')
date1 = datetime.datetime.strptime(d1, '%m/%d/%Y %I:%M:%S %p')
delta = date0 - date1
delta = delta.days + (delta.seconds / 86400.0)  # add day fraction
print delta

关于您提供的日期,这两种格式中的一种应该有效

用秒数:

"%m/%d/%Y %I:%M:%S %p"
没有秒:

"%m/%d/%Y %I:%M %p"
在此处阅读有关strtime格式行为的更多信息:

用它将解析的示例对其进行了很好的解释


例如,如果第1列第1行为“1/21/2014 10:51 AM”,第2列第1行为“9/4/2012 2:56:29 AM”。那么最终输出应该是“504.33”

据此:

date0 = datetime.datetime.strptime(d0, "%m/%d/%Y %I:%M:%S %p")
date1 = datetime.datetime.strptime(d1, "%m/%d/%Y %I:%M %p")
delta = date0 - date1
return delta.days + (delta.seconds / 86400.0) # 60 seconds in 60 minutes in 24 hours

您的问题是什么?我如何通过CSV文件找到上述两个日期/时间之间的差异?另外,
1/21/2014
VS
%Y/%m/%d
似乎很明显顺序错误。它应该是%e。请阅读您正在使用的函数的文档。您的输入时间戳不一致(一个有秒,另一个没有秒)。每列是否有一致性,或者日期是否随机缺少秒数?@user3266742:我刚刚告诉过你,你的帖子中的日期不一致。您是否忘记在第一个时间戳中包含秒数?