Pandas to_datetime: неизвестный формат строки - PullRequest
0 голосов
/ 25 сентября 2018

Столбец «Дата» в кадре данных выглядит следующим образом:

19 Mar. 2017
12 Mar. 2017
08 Mar. 2017
05 Mar. 2017
26 Feb. 2017
19 Feb. 2017
12 Feb. 2017
05 Feb. 2017
29 Jan. 2017
22 Jan. 2017
15 Jan. 2017
08 Jan. 2017
01 Jan. 2017
25 Dec. 2016
18 Dec. 2016
11 Dec. 2016
04 Dec. 2016
27 Nov. 2016
20 Nov. 2016

Когда я пытался это сделать:

df = df[pd.to_datetime(df['Date']).dt.year==2016]

Он жаловался:

ValueError: Неизвестный формат строки

Я думаю, он не может распознать формат строки даты.

Любая идея, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете указать format с pd.to_datetime для нестандартных форматов, например, pd.to_datetime(my_series, format='%d %b. %Y').Затем используйте pd.Series.dt.year.Это рекомендуемый метод.См. Также Директивы Python strftime .

Однако, если вы конвертируете только в datetime для фильтрации по годам и не меняете тип вашей серии, вы можете просто запросить последний4 символа:

df[df['dates'].str[-4:] == '2016']
0 голосов
/ 25 сентября 2018

Использовать пользовательские format по параметру format in to_datetime:

df['Date'] = pd.to_datetime(df['Date'], format='%d %b. %Y')
df = df[df['Date'].dt.year==2016]
print (df)
         Date
13 2016-12-25
14 2016-12-18
15 2016-12-11
16 2016-12-04
17 2016-11-27
18 2016-11-20
...