繁体   English   中英

使用 pandas 将 object 数据类型转换为 Python 中的日期时间数据类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM