我正在尝试读取.csv文件,其中包含时间戳,车牌,车辆类型和退出/进入

时间:2017-11-22 05:23:13

标签: python-3.x csv

我需要将时间戳存储在列表中以便进一步操作,并编写了以下代码:

    import csv
    from datetime import datetime

    from collections import defaultdict
    t = []
    columns = defaultdict(list)
    fmt = '%Y-%m-%d %H:%M:%S.%f'
    with open('log.csv', 'r') as f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            #t = row[1]
            for i in range(len(row)):
                columns[i].append(row[i])

            if (row):
                t=list(datetime.strptime(row[0],fmt))


    columns = dict(columns)

    print (columns)
    for i in range(len(row)-1):

        print (t)

但我收到错误:

    Traceback (most recent call last):
  File "parking.py", line 17, in <module>
    t = list(datetime.strptime(row[0],fmt))
TypeError: 'datetime.datetime' object is not iterable

如何在列表中的列中存储每个时间戳?

编辑1: 以下是示例日志文件

2011-06-26 21:27:41.867801,KA03JI908,Bike,Entry
2011-06-26 21:27:42.863209,KA02JK1029,Car,Exit
2011-06-26 21:28:43.165316,KA05K987,Bike,Entry

2 个答案:

答案 0 :(得分:0)

如果你有一个csv文件而不是为什么不使用pandas来获得你想要的东西。问题的代码可能是这样的。

import Pandas as pd
df=pd.read_csv('log.csv')
timestamp=df[0]

如果csv的第一列是Timestamp而不是一个数组,其中列表中第一列中的所有条目都被称为timestamp。

在此之后,您可以使用datetime.datetime.strptime()将此列表的所有条目转换为时间戳对象。

希望这有用。

答案 1 :(得分:0)

我无法评论澄清。 这段代码会为您提供列表中的时间戳吗?如果是,请从csv文件中提取几行数据。

from datetime import datetime

timestamps = []
with open(csv_path, 'r') as readf_obj:
    for line in readf_obj:
        timestamps.append(line.split(',')[0])
fmt = '%Y-%m-%d %H:%M:%S.%f'
datetimes_timestamps = [datetime.strptime(timestamp_, fmt) for timestamp_ in timestamps]