【问题标题】:How to convert an object column into datetime for pandas如何将对象列转换为熊猫的日期时间
【发布时间】:2020-01-28 15:33:35
【问题描述】:

我有一个包含两列的 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''

【问题讨论】:

    标签: pandas datetime


    【解决方案1】:

    如果您的 date 列中的所有条目的格式都类似于 yyyy-mm-dd hh:mm:ss 那么 pd.to_datetime(df['date']) 就足够了(这个函数很“聪明” 足以发现正确的格式)。

    显然你有一些“特殊”值,格式不同, 不能转换为日期时间

    请注意,to_datetime 的参数之一是 errors,默认值为 raise,意思是“在出现任何错误时引发异常”。

    所以尝试例如你运行 pd.to_datetime(df['date'], errors='coerce') 来转换这样的“异常” NaT 的值。

    然后检查哪些输出行包含这样的值并查看对应的 源 DataFrame 中的行(或例如在您从中读取此 DataFrame 的文件中)。 您很可能会发现输入中的错误并决定如何纠正 这些错误。

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 2020-11-03
      • 2018-12-08
      • 2019-03-24
      • 2017-08-24
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多