Не могу использовать маятник для разбора дат в Серии, но работает один за другим - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь разобрать даты, используя 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 ]

1 голос
/ 17 мая 2019

Я думаю, вы должны использовать .naive () в конце

dates.apply(lambda x: pendulum.parse(x).naive()) #works

Смотрите эту тему: https://github.com/sdispater/pendulum/issues/246

Похоже, что pandas пытается преобразовать дату / время с учетом часового пояса в это собственное представление метки времени, но это преобразование не запускается с наивным свиданием. Я не думаю, что кто-то виноват здесь, как пользователь обоих маятников и панд затрудняет их использование вместе.

0 голосов
/ 17 мая 2019

Так как доза панд не имеет наносекунды, в 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
...