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

pd.read_csv指定dtype=str后执行join报TypeError如何解决

报错根因分析

该TypeError: sequence item 0: expected str instance, float found报错的核心原因是执行''.join拼接操作时,待拼接的序列中存在float类型的NaN值,并非所有元素都是字符串。

你虽然在read_csv时指定了dtype=str,但pandas默认会自动识别文件中的空值、空白位置为缺失值NaN(float类型),该规则优先级高于dtype指定,所以最终数据中仍然混有float类型的值。

解决步骤
  • 读取文件时关闭缺失值检测,避免自动生成NaN,修改read_csv参数,增加na_filter=False;同时如果文件中存在多个连续空格作为分隔符,将sep=' '改为sep='\s+'避免生成空列。
  • reshape生成新DataFrame后,主动做一次类型强转,确保所有元素都是字符串后再执行拼接操作,完整代码如下:
import pandas as pd

set1Load = pd.read_csv("Sys 1 Settings.csv", sep='\s+', header=None, dtype=str, na_filter=False)
x,y = set1Load.shape
set1Formatted = pd.DataFrame(set1Load.values.reshape(x*y//2, 2)[:, ::-1])\
                .astype(str)\
                .apply(''.join, axis=1)
print(set1Formatted)
验证方法

如果要确认是否是缺失值导致的问题,可以在读取文件后执行以下代码查看是否存在空值:

print(set1Load.isna().sum())

如果输出结果中存在大于0的数值,就说明原始读取结果中存在NaN值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:15:05