python - Pandas.to_datetime 函数静默失败

标签 python datetime pandas

我在使用 pandas to_datetime 函数和 pandas 中的一般日期时间时遇到了一些困难。具体来说, to_datetime 在应用于 pandas 系列时无提示地失败,没有做任何事情,我必须单独明确地迭代每个值以使函数正常工作,即使(至少根据 this SO question )两者都应该工作一样。

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 列没有被正确解析,我怀疑这可能与这次失败有关。

谢谢,

戴夫

最佳答案

这已在新的 pandas 中得到修复,默认的 errors 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.

注意:这个参数在旧的 pandas 版本中曾经是 coerce=True

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

此行为 to_datetime is discussed in the timeseries section of the docs .

您可以通过检查 isnull 查看哪些日期解析失败。 :

In [5]: dates[pd.isnull(pd.to_datetime(dates, errors='coerce'))]
Out[5]: 
1    A
dtype: object

关于python - Pandas.to_datetime 函数静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106776/

相关文章:

c# - 不支持 Linq-to-EF DateTime.ToLocalTime

python - 使用不同的日期时间格式、datetime 和 datetime64 进行计算

javascript - 如何使用 javascript 将 12 小时日期时间转换为时间戳

python - 如何删除从 csv 导入的 python pandas 数据框中的部分数据?

python - Pandas.DataFrame.sum(axis = 1) 不工作

python - 在python代码中查找除法运算符的所有用法

python - 在 matplotlib 中更改图形大小和图形格式

python - 比较 python 中 sql 的两个列表并使用 pandas.io 显示结果

python - 如何使 Django 自定义管理命令参数不需要?

python - PyQt5 可执行文件因缺少 DLL 而崩溃