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

Google Colab重复运行Python代码报AttributeError问题求助

问题分析与解决方法

问题根源

第一次运行转换代码时,hr['Hire Date']列的元素是字符串类型,split()方法可以正常执行;执行完成后,该列被转换为pandas的Timestamp对象。第二次重复运行时,列中已经是Timestamp类型的数据,而Timestamp没有split()方法,因此抛出AttributeError。重启笔记本后,数据源被重新加载,列回到初始的字符串类型,所以代码又能正常运行。

解决方法

方法1:在转换函数中加入类型判断

在自定义的convert_date函数里先检查元素类型,如果已经是日期类型就直接返回,避免重复转换:

import datetime
import pandas as pd

def convert_date(x):
    # 检查是否已经是日期类型
    if isinstance(x, (pd.Timestamp, datetime.datetime)):
        return x
    y = x.split(' ')[0]
    return datetime.datetime(int(y.split('/')[2]), int(y.split('/')[1]), int(y.split('/')[0]))

hr['Hire Date'] = hr['Hire Date'].map(convert_date)

方法2:使用pandas内置的日期转换工具

pandas的pd.to_datetime()函数更健壮,能自动处理已转换为日期类型的元素,还支持多种日期格式:

# 无需自定义convert_date函数,直接替换第3块代码
import pandas as pd

# 指定日期格式为日/月/年,匹配你的数据格式
hr['Hire Date'] = pd.to_datetime(hr['Hire Date'], format='%d/%m/%Y')

如果你的日期格式不固定,可以省略format参数,让pandas自动推断格式。

方法3:避免重复执行转换代码

在Colab中可以给转换代码块添加执行标记,或者在执行前重新加载原始数据源,确保每次执行转换时列都是初始的字符串类型。

内容的提问来源于stack exchange,提问作者João Gabriel P. Agapito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:45:28