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

所有列均为float64和int64类型,为何dtype显示为object?

问题描述

执行以下代码查看数据类型:

print(cleaned_train.dtypes) 

print("--")

print(cleaned_test.dtypes)

得到输出:

YearOfObservation       int64
Insured_Period        float64
Residential             int64
Building_Painted      float64
Building_Fenced       float64
Building_Type         float64
Claim                 float64
Building Dimension    float64
Geo_Code              float64
dtype: object

--

YearOfObservation       int64
Insured_Period        float64
Residential             int64
Building_Painted      float64
Building_Fenced       float64
Building_Type         float64
Claim                 float64
Building Dimension    float64
Geo_Code              float64
dtype: object

尝试获取numeric类型却得到object类型,请问这是什么原因?

原因解析

你看到的最后一行dtype: object,是**cleaned_train.dtypes这个Series对象本身的数据类型**,和数据框里列的类型无关。从输出能明确看到,所有列的类型都是int64或float64,这些都属于numeric数值类型。

如果确实存在获取numeric类型时返回object的情况,可能是以下原因:

  • 列中混入了字符串形式的数值:比如部分单元格存储的是'100'这类字符串而非纯数值,导致列被识别为object类型。但你当前的dtypes输出显示所有列都是数值类型,所以这种情况不成立。
  • 后续操作中的误处理:比如列名包含空格(如Building Dimension),在引用列时出错,意外触发了类型转换,但从当前的dtypes结果看,列本身的类型是正常的。

简单说,你现在的数据框所有列都是numeric类型,别被df.dtypes最后一行的object标识误导,它只代表存储这些类型信息的Series的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:01:05