You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对pandas DataFrame列执行字符串转datetime类型转换

实现方案

报错核心原因是直接把整列pandas.Series对象传给了仅接受单个字符串入参的datetime.strptime,以下是3种可行实现方式,按推荐优先级排序:

  • 优先使用pandas原生向量化方法pd.to_datetime(性能最优)
    这是处理pandas时间列转换的标准方案,原生支持接收Series作为入参,不会有类型不匹配问题,指定匹配的时间格式时转换性能比逐行处理高1~2个数量级,大数据量下优势极其明显:

    import pandas as pd
    
    # 直接转换整列,format参数和strptime的格式规则完全一致
    df['Timestamp'] = pd.to_datetime(df['Timestamp'], format='%Y-%m-%d %H:%M:%S.%f')
    

    转换完成后该列数据类型为datetime64[ns],可直接做时间差计算、时间序列筛选、按时间粒度聚合等所有pandas时间相关操作。

  • 使用apply逐元素调用原生datetime.strptime(兼容原有写法)
    如果一定要用标准库的strptime逻辑,可以通过apply逐行取出单个字符串值传入函数,避免直接传整列的类型错误:

    import datetime
    
    df['Timestamp'] = df['Timestamp'].apply(
        lambda x: datetime.datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f')
    )
    

    注意:这种逐行遍历的写法性能远低于上面的pd.to_datetime,仅适合小数据集临时使用。

  • 直接指定日期类型转换(最简洁,仅适用于完全干净的标准格式数据)
    如果时间列100%为标准格式,无脏数据、空值,可以直接用astype做类型转换,写法最简洁:

    df['Timestamp'] = df['Timestamp'].astype('datetime64[ns]')
    

    该方法灵活度最低,只要存在一条不符合格式的记录就会直接报错,不推荐在生产环境/数据源不稳定的场景使用。

结果验证

转换完成后可执行以下代码检查列类型,确认转换生效:

print(df.dtypes)

输出中Timestamp对应类型为datetime64[ns]即代表转换成功。

内容的提问来源于stack exchange,提问作者MVMV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:27:25