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

Pandas代码报错TypeError:序列项3应为字符串,找到浮点数

解决Pandas中TypeError: sequence item X: expected string, float found的问题

这个错误很典型,问题根源一目了然:你在使用', '.join()拼接分组后的Char_spcValue值时,该列里存在float类型的数据(可能是原始数据里的数值,或是未处理干净的缺失值),而join()方法只能拼接字符串,遇到非字符串类型就会抛出这个类型错误。

具体修复方案和代码调整

我们需要确保分组拼接前,Char_spcValue列的所有元素都是字符串类型,这里提供两种实用的处理方式:

方式一:提前转换列类型并处理缺失值

在读取df1后,直接将目标列转为字符串,同时把可能存在的缺失值替换成空字符串(或你需要的占位符):

import pandas as pd
df1 = pd.read_csv("Book3.csv")
# 转换为字符串类型,同时填充缺失值
df1['Char_spcValue'] = df1['Char_spcValue'].astype(str).fillna('')
df2 = pd.read_csv("Book4.csv")
df2 = df2.dropna(axis=0)
# 此时拼接不会再出现类型冲突
g = df1.groupby('Attribute_spcName')['Char_spcValue'].apply(', '.join)
df2['Char_spcValue'] = df2['Attribute_spcName'].map(g)
df2.rename(columns={ 'Attribute_spcName': 'Attributes', 'Char_spcValue': 'Values'}, inplace=True)
df2 = df2[['Attributes', 'Values']]
df2.to_csv("AttributeHasValues.csv", index=False)

方式二:在拼接时动态转换元素类型

如果你不想提前修改df1的列结构,可以在apply操作里直接把每个元素转成字符串后再拼接:

import pandas as pd
df1 = pd.read_csv("Book3.csv")
df2 = pd.read_csv("Book4.csv")
df2 = df2.dropna(axis=0)
# 先将分组内的每个元素转为字符串,再执行拼接
g = df1.groupby('Attribute_spcName')['Char_spcValue'].apply(lambda x: ', '.join(map(str, x)))
df2['Char_spcValue'] = df2['Attribute_spcName'].map(g)
df2.rename(columns={ 'Attribute_spcName': 'Attributes', 'Char_spcValue': 'Values'}, inplace=True)
df2 = df2[['Attributes', 'Values']]
df2.to_csv("AttributeHasValues.csv", index=False)

方案说明

  • 第一种方式提前统一了数据类型,能从根源上避免后续的类型冲突,同时处理了缺失值,逻辑更直观。
  • 第二种方式更灵活,适合不想改动原始数据列类型的场景,仅在拼接环节临时转换类型。

你可以根据自己的实际需求选择其中一种方案,两种方式都能完美解决这个类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:11:25