Строка для формата даты и времени в Pandas

1

У меня есть файл csv, содержащий столбец даты. Даты указаны в формате "1Nov", "22ndNov" и т.д. Как я могу программно преобразовать их в дату в Pandas?

  • 0
    Пожалуйста, покажите ваши данные
  • 0
    Итак, последние три буквы месяцы?
Показать ещё 2 комментария
Теги:
pandas
csv
python-3.x
datetime

2 ответа

0

Это не проблема, специфичная для Pandas, а проблема в сопоставлении строк и шаблонов. Используйте директивы Python strftime. Обратите внимание, что вы также должны предоставить год: объекты datetime внутри должны иметь год. Итак, с регулярным Python:

from datetime import datetime

L = ["1stNov", "22ndNov"]
res = [datetime.strptime(i[:-5] + i[-3:] + '2018', '%d%b%Y') for i in L]

[datetime.datetime(2018, 11, 1, 0, 0),
 datetime.datetime(2018, 11, 22, 0, 0)]

Или с Пандами:

s = pd.Series(L)
res = pd.to_datetime(s.str[:-5] + s.str[-3:] + '2018', format='%d%b%Y')

0   2018-11-01
1   2018-11-22
dtype: datetime64[ns]
0

Использовать список с помощью parser:

df = pd.DataFrame({'dates':["1stNov", "22ndNov"]})

from dateutil import parser
df['dates'] = [parser.parse(f'{x[:-3]} {x[-3:]} 2018') for x in df['dates']]

Или удалите st, nd строки и преобразуйте to_datetime:

#python 3.6+ solution with f-strings
dates = [(f'{x[:-5]}{x[-3:]}2018') for x in df['dates']]
#python bellow 3.6
#dates = ['{}{}2018'.format(x[:-5], x[-3:]) for x in df['dates']]
df['dates'] = pd.to_datetime(dates, format='%d%b%Y')

print (df)
       dates
0 2018-11-01
1 2018-11-22

Ещё вопросы

Сообщество Overcoder
Наверх
Меню