大熊猫to_datetime:未知的字符串格式

时间:2018-09-25 13:04:47

标签: python python-3.x pandas datetime series

数据框中的“日期”列如下:

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 :(得分:1)

通过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 :(得分:0)

您可以将formatpd.to_datetime指定为非标准格式,例如pd.to_datetime(my_series, format='%d %b. %Y')。然后使用pd.Series.dt.year。这是推荐的方法。另请参见Python's strftime directives

但是,如果您仅转换为datetime以按年份进行过滤,而不更改系列的dtype,则只需查询最后4个字符即​​可:

df[df['dates'].str[-4:] == '2016']