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

我有两个 csv 文件,其中第一列是时间戳。我最终想获得每行两次之间的差异。


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')


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 文件,但随后我的程序冻结了(我认为是因为它无休止地循环)。


拉丁的传说
浏览 228回答 3
3回答

qq_笑_17

关于您的代码的一些注释。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') #this var will be recreated on each loop iterationwith 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 csvimport datetimefirst_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 会将生成的对象长度剪切为最短数组。

撒科打诨

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

慕的地6264312

这可以通过将两个 csv 分别读入一个数据帧,然后合并索引并创建第三列作为增量来完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python