遍历并在python datetime对象上执行功能

时间:2019-04-13 10:22:16

标签: python function loops csv datetime

由于对Python缺乏经验,当要遍历它们时,我无法正确处理datetime对象。我从csv文件导入了时间戳,并将其解析为datetime对象。现在,我无法对它们执行功能,因为我遇到了另一个错误。请查看我的代码,这是什么导致“ TypeError:'datetime.datetime'对象不可迭代”的原因。

如果我的问题没有简单的解决方案,有人可以告诉我如何将日期时间对象保存到列表中吗?

我的代码的功能受此帖子的启发,该帖子适用于以下列表中的日期时间对象:Getting the closest date to a given date

谢谢。

from datetime import datetime, timedelta
import pandas as pd

from dateutil.parser import parse

csvFile = pd.read_csv('myFile.csv')
column = csvFile['timestamp']

column = column.str.slice(0, 19, 1)

dt1 = datetime.strptime(column[1], '%Y-%m-%d %H:%M:%S')

print("dt1", dt1) #output: dt1 2010-12-30 15:06:00

dt2 = datetime.strptime(column[2], '%Y-%m-%d %H:%M:%S')

print("dt2", dt2) #output: dt2 2010-12-30 16:34:00

dt3 = dt1 - dt2

print("dt3", dt3) #output: dt3 -1 day, 22:32:00



#parsing the timestamps as datetime objects works:
for row in range(len(column)):
timestamp = datetime.strptime(column[row], '%Y-%m-%d %H:%M:%S')
print("timestamp", timestamp) #output (excerpt): timestamp 2010-12-30 14:32:00 timestamp 2010-12-30 15:06:00

此处发生错误:

base_date = dt1
def func(x):
    d = x[0]
    delta = d - base_date if d > base_date else timedelta.max
    return delta
min(timestamp, key = func)

1 个答案:

答案 0 :(得分:0)

timestamp是datetime.datetime的一个实例,您应该将其放入列表或元组中。 正确之后,应该像这样min([timestamp], key = func)