我有一個試圖清理的資料框架。它的日期格式不是字串,所以我用以下方法將其轉換為日期時間:
得到一個錯誤: 然而,當我單獨測驗時,它運行:df['datecreated']= pd.to_datetime(df[datecreated'])。
df['datecreated']= pd.to_datetime(df['datecreated'], format='%Y-%m-%d %H:%M:%S.%f')ValueError: time data "2021-09-16 16:32:11.643333" does not match format specified
為什么我得到的是 "#"?
為什么我會得到ValueError呢?
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~Anaconda3libsite-packagespandascorearraysdatetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
2084 try:
-> 2085 values, tz_parsed = conversion.datetime_to_datetime64(data)
2086 # If tzaware, these values represent unix timestamps, so we
pandas/_libs slibsconversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()
TypeError: 未識別的值type: <class 'str'>
在處理上述例外的程序中,發生了另一個例外。
ValueError 回溯(最近的一次呼叫)。
<ipython-input-59-63141dd04215> in <module>
----> 1 df['datecreated']= pd. to_datetime(df['datecreated'], format='%Y-%m-%d %H:%M:%S.%f')
2 df
~Anaconda3libsite-packagespandascore oolsdatetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
803 result = arg.map(cache_array)
804 else:
--> 805 values = convert_listlike(arg._values, format)
806 result = arg._constructor(values, index=arg.index, name=arg.name)
807 elif isinstance(arg, (ABCDataFrame, abc.MutableMapping)) 。
~Anaconda3libsite-packagespandascore oolsdatetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
470 errors=errors,
471 require_iso8601=require_iso8601,
--> 472 allow_object=True,
473 )
474 474
~Anaconda3libsite-packagespandascorearraysdatetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
2088 return values.view("i8"/span>), tz_parsed
2089 except(ValueError, TypeError)。
-> 2090 raise e
2091 raise e
2092 if tz_parsed is not None:
~Anaconda3libsite-packagespandascorearraysdatetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
2079 dayfirst=dayfirst。
2080 yearfirst=yearfirst,
-> 2081 require_iso8601=require_iso8601,
2082 )
2083 except ValueError as e:
pandas/_libs slib.pyx in pandas._libs.tslib.array_to_datetime()
pandas/_libs slib.pyx in pandas._libs.tslib.array_to_datetime()
ValueError: time data "2021-09-16 16:32:11.643333" doesnt match format specified.
Update
我試著加入: errors='coerce'
但是創建的資料列現在是NaT。這對我沒有幫助
uj5u.com熱心網友回復:正如錯誤提示的那樣:
ValueError: time data "2021-09-16 16:32:11.643333" doesn't match format specified
格式也需要引號。
df['datecreated']= pd.to_datetime(df['datecreated'], format='"%Y-%m-%d %H:%M:%S.%f")
uj5u.com熱心網友回復:
如果你的日期字串兩端有額外的雙引號,導致格式不匹配的錯誤,你最好在呼叫pd.to_datetime之前洗掉雙引號。 這樣一來,如果你有其他的元素沒有雙引號,這些代碼對所有帶雙引號和不帶雙引號的條目仍然有效:
.str.strip()來移除兩端的雙引號:
df['datecreated'] = pd.to_datetime(df['datecreated']. str.strip('"'), format='%Y-%m-%d %H:%M:%S.%f')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323986.html
標籤:
