【问题标题】:Why did Pandas stopped parsing mm/dd/yyyy date format?为什么 Pandas 停止解析 mm/dd/yyyy 日期格式?
【发布时间】:2018-04-14 11:11:48
【问题描述】:

Pandas 过去常常在索引和切片中解析 datetime 字符串以获得说服力,但是,它似乎停止将 mm/dd/yyyy 解析为日期格式。

以下代码示例均返回error parsing datetime string

案例一:

import pandas as pd
#to_datetime method
pd.to_datetime(['05/05/2017', '11/13/2017'])

案例 2:

#date_range
longer_ts = pd.Series(np.random.randn(1000),
                      index=pd.date_range('1/1/2000', periods=1000))

案例 3:

#Slicing a Series
from datetime import datetime
dates = [datetime(2011, 1, 2), datetime(2011, 1, 5)]
ts = pd.Series(np.random.randn(2), index=dates)
ts['01/05/2011']

我知道我可以使用yyyy-mm-dd,或者我什至可以使用dateutil.parser 中的parse()

顺便说一句,Wes McKinney 在他关于 Pandas 的书中多次使用这种日期格式。

他们为什么停止支持它?

【问题讨论】:

  • 我无法复制。 pd.to_datetime(['05/05/2017', '11/13/2017']) 对我来说很好。
  • 我在 Python 3.6.4 上使用 Pandas 0.17.1。切片也适合你吗?

标签: python pandas date datetime


【解决方案1】:

to_datetime的文档可以看出有一个说法:

格式:字符串,默认无。 strftime 解析时间,例如“%d/%m/%Y”,注意“%f”会一直解析到纳秒。

这很好用,例如:

>>> pd.to_datetime(['05/05/2017', '11/13/2017'], format='%m/%d/%Y')
DatetimeIndex(['2017-05-05', '2017-11-13'], dtype='datetime64[ns]', freq=None)

请注意,'11/ 13/2017' 中有一个额外的空间。

请注意,您也可以将其与 date_range 一起使用:

pd.date_range(pd.to_datetime('05/03/2017'), periods=200)

【讨论】:

  • 这在to_datetime 的情况下确实有效,但是它不能用于切片,也不能用于date_range。我知道如何绕过它,但这太不方便了。
  • @iDrwish 嘿,请注意,您可以在 date_range 中使用 to_datetime,但是,是的,这需要更多的输入。
  • pd.DatetimeIndex 确实接受mm/dd/yyyy 格式,有点不一致。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 2017-09-06
相关资源
最近更新 更多