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

为何to_numpy方法会将DataFrame的整数列转为字符串列?

解决DataFrame转numpy数组时某列变为字符串的问题

你遇到的问题核心是**"Nb Vessel"列的实际数据类型并非你以为的整数**,大概率是该列存在混合类型(比如部分元素是字符串格式的数字),导致整个列的dtype变成了object,转成numpy数组时就会统一为字符串类型。指定dtype=float32没用,是因为numpy无法直接把包含字符串的object列强制转成数值类型。

修复步骤:

  • 先检查列的真实类型:
    print(df['Nb Vessel'].dtype)
    
    如果输出是object,说明列里确实有非整数的元素。
  • 强制转换列类型为数值型:
    # 把列转成数值,无法转换的设为NaN
    df['Nb Vessel'] = pd.to_numeric(df['Nb Vessel'], errors='coerce')
    # 删除包含NaN的行(或者用df.fillna()填充,根据需求选择)
    df = df.dropna(subset=['Nb Vessel'])
    # 转成整数类型
    df['Nb Vessel'] = df['Nb Vessel'].astype(int)
    
  • 确认所有列都是数值类型后,再用to_numpy转换:
    arr = df.to_numpy(dtype='float32')
    

如果还是有问题,检查其他列是否也存在混合类型,确保整个DataFrame的所有列都是数值型后再转换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:37:37