为了账号安全,请及时绑定邮箱和手机立即绑定

比较两个 CSV 文件之间的日期时间对象时出现循环问题

比较两个 CSV 文件之间的日期时间对象时出现循环问题

拉丁的传说 2021-09-14 21:15:05
我有两个 csv 文件,其中第一列是时间戳。我最终想获得每行两次之间的差异。import csvimport datetimewith open('file1.csv', 'rb')as csvfile:                filereader = csv.reader(csvfile, delimiter=',')                                 for headers in range(2):                                                            next(filereader, None)                                                      for column in filereader:                                                           date = column[0]                                                                parsed_date = datetime.strptime(date, '%H:%M:%S')with open('file2.csv', 'rb')as csvfile:                filereader2 = csv.reader(csvfile, delimiter=',')                                 for headers in range(2):                                                            next(filereader2, None)                                                      for column2 in filereader:                                                           date2 = column2[0]                                                                parsed_date = datetime.strptime(date, '%H:%M:%S')        time_delta = (parsed_date - parsed_date2)就像现在一样,我的代码只使用了 parsed_date 的第一个实例,因为我已经把它从循环中取出来了。我如何获得所有值?我已经尝试读取 for 循环中的第二个 csv 文件,但随后我的程序冻结了(我认为是因为它无休止地循环)。
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

关于您的代码的一些注释。


import csv

import datetime


with open('file1.csv', 'rb')as csvfile:            

    filereader = csv.reader(csvfile, delimiter=',')                             

    for headers in range(2):                                                    

        next(filereader, None)                                                  

    for column in filereader:                                                   

        date = column[0]                                                        

        parsed_date = datetime.strptime(date, '%H:%M:%S') #this var will be recreated on each loop iteration


with open('file2.csv', 'rb')as csvfile:            

    filereader2 = csv.reader(csvfile, delimiter=',')                             

    for headers in range(2):                                                    

        next(filereader2, None)                                                  

    for column2 in filereader:                                                   

        date2 = column2[0]                                                        

        parsed_date = datetime.strptime(date, '%H:%M:%S')

        time_delta = (parsed_date - parsed_date2) # parsed_date2 - doesn't exist as was never created, time_delta is lost on each iteration

这意味着您会不断丢失要处理的数据。为了解决您的问题,只需先读取文件,然后再处理读取数据:


import csv

import datetime


first_file_dates = []

second_file_dates = []


with open('file1.csv', 'rb')as csvfile:            

    filereader = csv.reader(csvfile, delimiter=',')                             

    for headers in range(2):                                                    

        next(filereader, None)                                                  

    for column in filereader:                                                   

        first_file_dates.append(datetime.strptime(column[0], '%H:%M:%S'))



with open('file2.csv', 'rb')as csvfile:            

    filereader2 = csv.reader(csvfile, delimiter=',')                             

    for headers in range(2):                                                    

        next(filereader2, None)                                                  

    for column in filereader:                                                   

        second_file_dates.append(datetime.strptime(column[0], '%H:%M:%S'))


for k,v in zip(first_file_dates, second_file_dates):

    print(k-v)

请注意,该 zip 会将生成的对象长度剪切为最短数组。


查看完整回答
反对 回复 2021-09-14
?
撒科打诨

TA贡献1934条经验 获得超2个赞

我建议阅读这两个 csv 文件并保存适用的数据。然后将两者压缩在一起并从 zip 中对每个元组执行差异


查看完整回答
反对 回复 2021-09-14
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

这可以通过将两个 csv 分别读入一个数据帧,然后合并索引并创建第三列作为增量来完成。


查看完整回答
反对 回复 2021-09-14
  • 3 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号