首页 > 解决方案 > 尝试转换为日期时间和“ValueError:如果数据无法转换为日期时间”

问题描述

我正在尝试将pandas.core.series.Series对象类型转换为datetime使用它:

pd.to_datetime(list(stops_data['arrival_time']),'%HH%MM%SS')

但是python抛出了这个:

---------------------------------------------------------------------------
Traceback (most recent call last)
<ipython-input-51-c92e51656d69> in <module>
----> 1 pd.to_datetime(list(stops_data['arrival_time']),'%HH%MM%SS')

/home/BLABLA/snap/jupyter/common/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
    739     elif is_list_like(arg):
    740         try:
--> 741             cache_array = _maybe_cache(arg, format, cache, convert_listlike)
    742         except tslibs.OutOfBoundsDatetime:
    743             # caching attempts to create a DatetimeIndex, which may raise

/home/BLABLA/snap/jupyter/common/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _maybe_cache(arg, format, cache, convert_listlike)
    150         unique_dates = unique(arg)
    151         if len(unique_dates) < len(arg):
--> 152             cache_dates = convert_listlike(unique_dates, format)
    153             cache_array = Series(cache_dates, index=unique_dates)
    154     return cache_array

/home/BLABLA/snap/jupyter/common/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    445             errors=errors,
    446             require_iso8601=require_iso8601,
--> 447             allow_object=True,
    448         )
    449 

/home/BLABLA/snap/jupyter/common/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
   1838     ValueError : if data cannot be converted to datetimes
   1839     """
-> 1840     assert errors in ["raise", "ignore", "coerce"]
   1841 
   1842     # if str-dtype, convert

AssertionError:

上下文,以防我的前提是错误的: 我试图在调度间隔 (HH:MM:SS) 中查找时间列表 (HH:MM:SS) 的出现,所以我使用numpy.digitize. 为此,我必须创建两个 numpy 数组,但它给了我这个错误TypeError: Cannot cast array data from dtype('<U13') to dtype('float64') according to the rule 'safe',所以我尝试将数据转换为我实际需要的数据类型。

编辑:我没有解决这个问题。我设法将所有时间转换为整数并且运行良好,但我仍然想知道这个错误是什么意思。谢谢!

标签: pythonpandas

解决方案


它应该作为

pd.to_datetime(stops_data['arrival_time'])

检查此答案以获取更多信息。


推荐阅读