Строка для формата даты и времени в Pandas - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть CSV-файл, который содержит столбец даты.Даты имеют формат «1stNov», «22ndNov» и т. Д. Как программно преобразовать их в дату и время в Пандах?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Используйте понимание списка с 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
0 голосов
/ 03 декабря 2018

Это не специфичная для Панды проблема, а проблема в сопоставлении строк / шаблонов.Используйте директивы 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...