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

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
Chan Austin 25 Сен 2018 в 16:04

2 ответа

Лучший ответ

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

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

df[df['dates'].str[-4:] == '2016']
0
jpp 25 Сен 2018 в 13:10

Используйте пользовательский format по параметру format в 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
1
jezrael 25 Сен 2018 в 13:06