我有一个df
列,其中两列,df.info()
产生以下结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 2 columns):
date 200 non-null object
all_events 200 non-null int64
dtypes: int64(1), object(1)
memory usage: 3.2+ KB
问题:
如何将df['date']
转换为datetime
对象?
相关研究
我尝试过的事情:
df['date'] = pd.to_datetime(df['date'], infer_datetime_format=True)
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S')
df['date'] = pd.to_datetime(df['date'].str.strip(), format='%Y-%m-%d %H:%M:%S')
问题:
无论我尝试了什么,我总是会收到以下消息:
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
答案 0 :(得分:0)
如果您的 date 列中的所有条目都具有 yyyy-mm-dd hh:mm:ss 形式, pd.to_datetime(df ['date'])就足够了(此功能是“聪明的” 足以发现正确的格式。
显然您有一些格式不同的“例外”值, 不能转换为 datetime 。
请注意, to_datetime 的参数之一是 errors ,默认值为 raise ,意思是“在出现任何错误的情况下引发异常”。
所以尝试例如您可以运行 pd.to_datetime(df ['date'],errors ='coerce')来转换此类“例外” 值为 NaT 。
然后检查哪些输出行包含该值并查看对应的 源DataFrame中的行(例如,您从中读取此DataFrame的文件中)。 您很可能会发现输入中的错误并决定如何纠正 这些错误。