Python Pandas.to_datetime函数以静默方式失败

Python Pandas.to_datetime函数以静默方式失败,python,datetime,pandas,Python,Datetime,Pandas,我对pandas to_datetime函数和pandas中的datetime有一些困难。具体地说,to_datetime在应用于pandas系列时会悄无声息地失败,而且我必须显式地逐个迭代每个值,以使函数正常工作,即使(至少根据)两者应该工作相同 In [81]: np.__version__ Out[81]: '1.6.1' In [82]: pd.__version__ Out[82]: '0.12.0' In [83]: a[0:10] Out[83]: 0 8/31/201

我对pandas to_datetime函数和pandas中的datetime有一些困难。具体地说,to_datetime在应用于pandas系列时会悄无声息地失败,而且我必须显式地逐个迭代每个值,以使函数正常工作,即使(至少根据)两者应该工作相同

In [81]: np.__version__
Out[81]: '1.6.1'

In [82]: pd.__version__
Out[82]: '0.12.0'

In [83]: a[0:10]
Out[83]: 
0    8/31/2013 14:57:00
1    8/31/2013 13:55:00
2    8/31/2013 15:45:00
3     9/1/2013 13:26:00
4     9/1/2013 13:56:00
5     9/2/2013 13:55:00
6     9/3/2013 13:33:00
7     9/3/2013 14:11:00
8     9/3/2013 14:35:00
9     9/4/2013 14:28:00
Name: date_time, dtype: object

In [84]: a[0]
Out[84]: '8/31/2013 14:57:00'

In [85]: a=pd.to_datetime(a)

In [86]: a[0]
Out[86]: '8/31/2013 14:57:00'

In [87]: a=[pd.to_datetime(date) for date in a]

In [88]: a[0]
Out[88]: Timestamp('2013-08-31 14:57:00', tz=None)
你有没有想过为什么会这样?总体而言,我似乎在处理这些数据时遇到了问题,并且没有正确解析date_time列,我怀疑这可能与此故障有关

谢谢


Dave

Pandas.to_datetime函数以静默方式失败,如果失败,只返回原始值。一个格式错误的输入可能会导致整个过程以静默方式失败。

这已在new pandas中修复,默认错误kwarg为“raise”而不是“ignore”。
新的行为是:

In [21]: pd.to_datetime(dates)  # same as errors='raise'
...
ValueError: Given date string not likely a datetime.

In [22]: pd.to_datetime(dates, errors="ignore")  # the original problem
Out[22]:
0    1/1/2014
1           A
dtype: object
也就是说,
to_datetime
不再以静默方式失败

旧的答案保留在下面


正如DaveA指出的(在检查我的评论之后),默认情况下,如果出现问题,则to_datetime会以静默方式失败,并返回最初传递的内容:

In [1]: dates = pd.Series(['1/1/2014', 'A'])

In [2]: pd.to_datetime(dates)  # doesn't even convert first date
Out[2]: 
0    1/1/2014
1           A
dtype: object

In [3]: pd.to_datetime(dates, errors='raise')
...
ValueError: Given date string not likely a datetime.
注意:在旧版本中,此参数过去是
concurve=True

In [4]: pd.to_datetime(dates, errors='coerce')
Out[4]: 
0   2014-01-01
1          NaT
dtype: datetime64[ns]
这种行为

通过检查,您可以看到哪些日期未能解析:


它是否适用于<代码> Pd.ToDATeTIME(A[0:10])< /代码>?这对我来说是适用于NUMPY 1.7和熊猫0.12考虑升级到NUMPY 1.7.1HMM,我在Mac上的NoMPy版本之间,在预安装的系统版本和我的PIP版本之间似乎有冲突。一旦我决定,我会在这里回应。。。谢谢您可以尝试使用pd.to_datetime(s,errors='raise')吗+1到其他要升级的答案。
In [5]: dates[pd.isnull(pd.to_datetime(dates, errors='coerce'))]
Out[5]: 
1    A
dtype: object