如何解决Python中的TypeError:期望str实例却找到int
问题解决:合并列时TypeError(int类型无法参与字符串join)
报错原因
报错TypeError: sequence item 1: expected str instance, int found的核心是:你要合并的['A', 'Room', 'C']列中,部分CSV文件包含整数类型的数据,而str.join()方法只能拼接字符串序列,无法直接处理整数。能正常运行的那个CSV恰好这三列全是字符串类型,所以没触发错误。
修复方案
有两种直接的修复方式,任选其一即可:
方式1:提前将目标列转为字符串类型
在合并列之前,先把['A', 'Room', 'C']统一转成字符串类型,确保所有数据都能被join处理:
# 合并列与值 merge_columns = ['A', 'Room', 'C'] merged_col = ''.join(merge_columns).replace('ARoomC', 'F') # 新增:将需要合并的列转换为字符串类型 new[merge_columns] = new[merge_columns].astype(str) new[merged_col] = new[merge_columns].apply(lambda x: '.'.join(x), axis=1) new.drop(merge_columns, axis=1, inplace=True) new = new.groupby(merged_col).count().reset_index() new.to_csv(p, index=False)
方式2:在lambda中逐个转换元素类型
如果不想修改原列的类型,可以在join时临时把每个元素转为字符串:
new[merged_col] = new[merge_columns].apply(lambda x: '.'.join(str(item) for item in x), axis=1)
额外优化建议
你的代码中先执行了一次new.to_csv(p, index=False),之后又修改数据再次保存,这会导致重复写入文件,完全可以去掉第一次保存,只保留最后一次的new.to_csv(p, index=False),提升效率。
内容的提问来源于stack exchange,提问作者QuickSilver42
相关产品推荐
相关产品推荐

