IPyNb环境下CSV的Time列无法转为datetime格式,求助解决
解决Time列无法转为datetime格式的问题
核心原因
pd.to_datetime转换后列仍为object类型,说明存在格式不匹配的时间字符串——默认情况下,无法转换的值会被保留为原字符串,导致整列类型未改变,自然无法使用.dt访问器。
具体解决步骤
强制报错定位问题
给pd.to_datetime添加errors="raise"参数,一旦遇到不符合指定格式的时间字符串,会直接抛出错误并定位问题行:data["Time"] = pd.to_datetime(data["Time"], format="%d/%m/%Y %H:%M", errors="raise")排查脏数据
如果不想直接报错,可使用errors="coerce"将无法转换的值转为NaT(缺失时间值),再筛选出异常行查看具体内容:# 生成转换后的临时列 data["Time_parsed"] = pd.to_datetime(data["Time"], format="%d/%m/%Y %H:%M", errors="coerce") # 筛选转换失败的时间字符串 invalid_times = data[data["Time_parsed"].isna()]["Time"] print(invalid_times)查看输出的异常内容,可能是格式不符(比如部分行是
%m/%d/%Y格式、带多余字符、空格不一致等),针对性清洗后再重新转换。验证转换并提取小时
转换完成后,检查列的数据类型确认是否成功:print(data["Time"].dtype)输出应为
datetime64[ns],此时即可正常提取小时:data["hour"] = data["Time"].dt.hour
内容的提问来源于stack exchange,提问作者ezinne chukwuma
相关产品推荐
相关产品推荐

