如何将对象列转换为熊猫的日期时间

时间:2020-01-28 04:28:15

标签: pandas datetime

我有一个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''

1 个答案:

答案 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的文件中)。 您很可能会发现输入中的错误并决定如何纠正 这些错误。