Аргумент 1 strptime () должен быть str, а не преобразовывать временные ряды серии - PullRequest
0 голосов
/ 01 мая 2018

Я использую datetime для чтения времени из json, хорошо работает код на один раз,

 import datetime
 data=datetime.datetime.strptime('Apr 12, 2018', '%b %d, Y').strftime('%m/%d/%Y')

Однако, когда я пытаюсь применить его к фрейму данных, у меня появляется ошибка.

 df_newtime=datetime.datetime.strptime(old_df['oldDate'],'%b %d, %Y').strftime('%m/%d/%Y')

ошибка TypeError: strptime() argument 1 must be str, not Series

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

old_df['oldDate'] вернет столбец с датами, представляющими собой серию.

Вы можете решить эту проблему, используя функцию .apply в pandas, чтобы применить функцию к каждой строке кадра данных. Смотри здесь

def date_convert(date_to_convert):
     return datetime.datetime.strptime(date_to_convert, '%b %d, 
     %Y').strftime('%m/%d/%Y')

new_df['new_date'] = old_df['oldDate'].apply(date_convert)
0 голосов
/ 01 мая 2018

Вы можете сделать это двумя способами:

Метод 1:

Здесь мы передаем строку функции, используя map

list(map(lambda x: datetime.datetime.strptime(x,'%b %d, %Y').strftime('%m/%d/%Y'), old_df['oldDate']))

Метод 2:

Здесь мы проходим серию

pd.to_datetime(old_df['oldDate'], format='%b %d, %Y')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...