![](/img/trans.png)
[英]Issue converting python dataframe datatype from object to datetime
[英]Converting object datatype to datetime datatype in Python using pandas
我有一个出租车票价预测数据集,我需要将其变量“pickup_datetime”之一从 object 数据类型转换为日期时间数据类型。 我正在使用 pandas 将其转换为日期时间。 代码:
data['pickup_datetime']=pd.to_datetime(data['pickup_datetime'],format='%Y-%m-%d %H:%M:%S UTC')
我得到以下错误。 有人可以建议如何从我的变量中找到不正确的行吗?
> TypeError Traceback (most recent call last)
> ~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
> _convert_listlike_datetimes(arg, box, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
> 290 try:
> --> 291 values, tz = conversion.datetime_to_datetime64(arg)
> 292 return DatetimeIndex._simple_new(values, name=name, tz=tz)
>
> pandas/_libs/tslibs/conversion.pyx in
> pandas._libs.tslibs.conversion.datetime_to_datetime64()
>
> TypeError: Unrecognized value type: <class 'str'>
>
> During handling of the above exception, another exception occurred:
>
> ValueError Traceback (most recent call
> last) <ipython-input-59-c94549aa5074> in <module>
> ----> 1 data['pickup_datetime']=pd.to_datetime(data['pickup_datetime'],format='%Y-%m-%d
> %H:%M:%S UTC')
>
> ~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
> to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact,
> unit, infer_datetime_format, origin, cache)
> 590 else:
> 591 from pandas import Series
> --> 592 values = convert_listlike(arg._values, True, format)
> 593 result = Series(values, index=arg.index, name=arg.name)
> 594 elif isinstance(arg, (ABCDataFrame, compat.MutableMapping)):
>
> ~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
> _convert_listlike_datetimes(arg, box, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
> 292 return DatetimeIndex._simple_new(values, name=name, tz=tz)
> 293 except (ValueError, TypeError):
> --> 294 raise e
> 295
> 296 if result is None:
>
> ~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
> _convert_listlike_datetimes(arg, box, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
> 259 try:
> 260 result, timezones = array_strptime(
> --> 261 arg, format, exact=exact, errors=errors)
> 262 if '%Z' in format or '%z' in format:
> 263 return _return_parsed_timezone_results(
>
> pandas/_libs/tslibs/strptime.pyx in
> pandas._libs.tslibs.strptime.array_strptime()
>
> ValueError: time data '43' does not match format '%Y-%m-%d %H:%M:%S
> UTC' (match)
Pandas to_datetime()
有一个errors
参数,它允许您处理通常由于格式设置引起的错误。 默认情况下,它设置为“提高”。 您可以忽略这样的错误:
data['pickup_datetime'] = pd.to_datetime(data['pickup_datetime'], format='%Y-%m-%d %H:%M:%S UTC', errors='coerce')
这将为所有不正确的日期时间返回 NaT。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.