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:我刚刚告诉过你,你的帖子中的日期不一致。您是否忘记在第一个时间戳中包含秒数?