【发布时间】:2020-10-03 11:13:58
【问题描述】:
时间数据与我的格式不匹配的错误。
这是数据示例:
import pandas as pd
data = pd.DataFrame({'TransactionTime': ['Sat Feb 02 12:50:00 IST 2019']})
这是我的代码:
data['TransactionTime'] = pd.to_datetime(data['TransactionTime'], format = '%a %b %d %H:%M:%S %Z %Y')
追溯
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
e:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
431 try:
--> 432 values, tz = conversion.datetime_to_datetime64(arg)
433 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-139-ed51a35d7ed3> in <module>
----> 1 data['TransactionTime'] = pd.to_datetime(data['TransactionTime'], format = '%a %b %d %H:%M:%S %Z %Y')
e:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
726 result = arg.map(cache_array)
727 else:
--> 728 values = convert_listlike(arg._values, format)
729 result = arg._constructor(values, index=arg.index, name=arg.name)
730 elif isinstance(arg, (ABCDataFrame, abc.MutableMapping)):
e:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
433 return DatetimeIndex._simple_new(values, name=name, tz=tz)
434 except (ValueError, TypeError):
--> 435 raise e
436
437 if result is None:
e:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
398 try:
399 result, timezones = array_strptime(
--> 400 arg, format, exact=exact, errors=errors
401 )
402 if "%Z" in format or "%z" in format:
pandas\_libs\tslibs\strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()
ValueError: time data 'Sat Feb 02 12:50:00 IST 2019' does not match format '%a %b %d %H:%M:%S %Z %Y' (match)
【问题讨论】:
-
这可能会帮助您了解
data['TransactionTime']是什么。根据the documentation,它需要是“int,float,str,datetime,list,tuple,一维数组,Series DataFrame/dict-like”,如果你遇到这个错误,它可能不是。另一种可能性是您要求将其格式化为'%a %b %d %H:%M:%S %Z %Y',而给定数据中不存在这些字段中的一个或多个。 (见this page)