Не могу использовать маятник для разбора дат в Серии, но работает один за другим
Я пытаюсь разобрать даты с помощью pendulum
, у меня есть TimeStamp
дата, поэтому я сделал следующее:
df['aux']=df['Date'].dt.date
df['p_date']=df.aux.apply(lambda x: pendulum.parse(x))
Что приводит к следующей ошибке:
AttributeError: 'DateTime' object has no attribute 'nanosecond'
Но если я сделаю, что-то вроде:
pendulum.parse(df.aux[0])
Разбирается без проблем. я думал apply(lambda x:)
применил одну и ту же функцию ко всем строкам Series
, но сейчас это не работает. Что происходит?
Образец кода:
dates=pd.Series(['2018-03-20','2019-03-21'])
dates.apply(lambda x: pendulum.parse(x)) #Doesn't work
pendulum.parse(dates[0]) #Works
2 ответа
Я думаю, что вы должны использовать.naive() в конце
dates.apply(lambda x: pendulum.parse(x).naive()) #works
Смотрите эту тему: https://github.com/sdispater/pendulum/issues/246
Кажется, что pandas пытается преобразовать дату / время с учетом часового пояса в собственное представление метки времени, но это преобразование не запускается с наивным датой-временем. Я не думаю, что здесь кто-то виноват, так как пользователь маятника и панд затрудняет их совместное использование.
Так как дозы панд не имеют наносекунды, в github, поэтому конвертируйте их в str
, а не получил следующую ошибку
Объект DateTime не имеет атрибута "наносекунда"
dates.apply(lambda x: str(pendulum.parse(x)))
Out[256]:
0 2018-03-20T00:00:00+00:00
1 2019-03-21T00:00:00+00:00
dtype: object