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

为何DataFrame整数列的值有时会以浮点数形式返回?

问题原因与解决办法

为什么类型不一致?

当你用iloc[0]提取整行时,返回的是一个Series对象。Pandas的Series会自动统一所有元素的数据类型——因为你的DataFrame里存在float64类型的列b,整数可以无损转换为浮点数,但浮点数无法直接转换为整数,所以Series会把整行的所有元素统一为float64类型,这就导致原本是int32的c列值也被转成了浮点数。

而df.c.values[0]是直接从c列的底层numpy数组中取元素,绕过了Series的类型统一逻辑,所以能保持原有的int32类型。

解决方法

  • 直接访问单个元素:不要先提取整行再取列,直接定位目标元素即可,示例代码:

    df.loc[0, 'c']  # 或者 df.iloc[0, 2]
    

    这样会直接返回c列原有的int32类型值,无需额外转换。

  • 提取整行但保留原类型:如果需要获取整行数据同时保留各列原始类型,可以用df.iloc[[0]]返回单行DataFrame(而非Series),再提取c列的值:

    df.iloc[[0]]['c'].values[0]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:55:15