Преобразование русской даты в тип datetime pandas
При попытке перевода колонки в формат 'data' выдает ошибку : ParserError: Unknown string format: 18-апр-2022
Используемый код: doh_total['DTRNCREATE'] = pd.to_datetime(doh_total['DTRNCREATE'])
Как выглядят данные в колонке 'DTRNCREATE' :
array(['18-апр-2022', '20-апр-2022', '11-апр-2022', '21-апр-2022',
'02-апр-2022', '15-апр-2022', '12-апр-2022', '28-апр-2022',
'06-апр-2022', '16-апр-2022', '22-апр-2022', '26-апр-2022',
'14-апр-2022', '30-апр-2022', '25-апр-2022', '29-апр-2022',
'09-апр-2022', '07-апр-2022', '19-апр-2022', '08-апр-2022',
'27-апр-2022', '04-апр-2022', '01-апр-2022', '13-апр-2022',
'23-апр-2022', '05-апр-2022'], dtype=object)
Как перевести тип данных object в datetime?
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
pandas не понимает по умолчанию не англоязычную дату. поэтому, выставляйте локаль и вперёд.
import pandas as pd
import locale
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
df = pd.DataFrame(['18-апр-2022', '20-апр-2022', '11-апр-2022', '21-апр-2022',
'02-апр-2022', '15-апр-2022', '12-апр-2022', '28-апр-2022',
'06-апр-2022', '16-апр-2022', '22-апр-2022', '26-апр-2022',
'14-апр-2022', '30-апр-2022', '25-апр-2022', '29-апр-2022',
'09-апр-2022', '07-апр-2022', '19-апр-2022', '08-апр-2022',
'27-апр-2022', '04-апр-2022', '01-апр-2022', '13-апр-2022',
'23-апр-2022', '05-апр-2022'], columns = ['DTRNCREATE'])
df["DTRNCREATE"] = pd.to_datetime(df["DTRNCREATE"], format="%d-%b-%Y")
print(df)
print(df.info())
DTRNCREATE
0 2022-04-18
1 2022-04-20
2 2022-04-11
3 2022-04-21
4 2022-04-02
5 2022-04-15
6 2022-04-12
7 2022-04-28
8 2022-04-06
9 2022-04-16
10 2022-04-22
11 2022-04-26
12 2022-04-14
13 2022-04-30
14 2022-04-25
15 2022-04-29
16 2022-04-09
17 2022-04-07
18 2022-04-19
19 2022-04-08
20 2022-04-27
21 2022-04-04
22 2022-04-01
23 2022-04-13
24 2022-04-23
25 2022-04-05
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26 entries, 0 to 25
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 DTRNCREATE 26 non-null datetime64[ns]
dtypes: datetime64[ns](1)
memory usage: 336.0 bytes
None
Автор решения: Николай Неустроев
→ Ссылка
Все-таки получилось, но вместо предложения locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8') попробовал
locale.setlocale(locale.LC_ALL, '')
'ru_RU.utf8' и получилось :)