Итерировать и выполнять функцию на объектах Python Datetime - PullRequest
0 голосов
/ 13 апреля 2019

будучи неопытным с Python, я не могу правильно обращаться с объектами datetime, когда хочу перебрать их. Я импортировал временные метки из CSV-файла и проанализировал их в объектах datetime. Теперь я не могу выполнять функции над ними, потому что я получаю одну ошибку за другой. Пожалуйста, смотрите мой код, что вызывает «TypeError: 'datetime.datetime' объект не повторяется".

Если не существует простого решения моей проблемы, может кто-нибудь сказать мне, как сохранить объекты datetime в список?

Функция моего кода вдохновлена ​​этим постом, который работает с объектами даты и времени из списка: Получение ближайшей даты к заданной дате

Заранее спасибо.

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 голосов
/ 13 апреля 2019

отметка времени является экземпляром datetime.datetime, вы должны поместить его в список или кортеж.после правильного должно быть так min([timestamp], key = func)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...