我需要将时间戳存储在列表中以便进一步操作,并编写了以下代码:
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
答案 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]