为何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
相关产品推荐
相关产品推荐

