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

float对象无rint属性,DataFrame浮点列用np.around无法取整求助

问题:numpy取整报错 'float' object has no attribute 'rint'

用np.around给DataFrame的float列保留两位小数时触发报错,所有单元格都是float类型,但操作失败。

数据详情

  • DataFrame包含两列:LMSD和LMSD(#),数值均为带多位小数的浮点数(如0.0000000001、0.9999999999)
  • 列类型:两列的dtype均为float64

执行代码

df_lmsd['LMSD']=np.around(df_lmsd['LMSD'],2)
df_lmsd['LMSD(#)']=np.around(df_lmsd['LMSD(#)'],2)
df_lmsd

错误提示

AttributeError: 'float' object has no attribute 'rint'

使用环境:Python 3.10.9,Jupyter Notebook


解决方法

这个问题本质是pandas与numpy的类型适配问题,直接用以下方法解决即可:

  1. 优先使用pandas自带的round方法
    pandas Series自带的round方法对自身数据结构适配性更好,直接调用:

    df_lmsd['LMSD'] = df_lmsd['LMSD'].round(2)
    df_lmsd['LMSD(#)'] = df_lmsd['LMSD(#)'].round(2)
    
  2. 转为numpy数组后再用np.around
    若一定要用numpy函数,先把Series转为numpy数组再操作:

    df_lmsd['LMSD'] = np.around(df_lmsd['LMSD'].values, 2)
    df_lmsd['LMSD(#)'] = np.around(df_lmsd['LMSD(#)'].values, 2)
    
  3. 统一列类型后再执行取整
    极少数情况是数据中混入非标准float对象,先强制转换为统一的float64类型:

    df_lmsd['LMSD'] = df_lmsd['LMSD'].astype('float64')
    df_lmsd['LMSD(#)'] = df_lmsd['LMSD(#)'].astype('float64')
    # 再执行取整操作
    df_lmsd['LMSD'] = np.around(df_lmsd['LMSD'], 2)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:22:27