Я пытаюсь разобрать даты, используя 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
Поскольку у панд нет наносекунды, в гитхаб, поэтому преобразуйте ее в str
вместо полученной следующей ошибки
'DateTime' object has no attribute 'nanosecond'
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
Я думаю, вам нужно использовать .naive() в конце
dates.apply(lambda x: pendulum.parse(x).naive()) #works
См. эту тему: https://github.com/sdispater/pendulum/issues/246
It seems that pandas tries to convert the timezone aware datetime to it's own timestamp representation, but that conversion isn't triggered with the naive datetime. I don't think anyone is at fault here, as a user of both pendulum and pandas it makes it difficult to use them together.
Почему бы вам не использовать
pd.to_datetime(dates)
?