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

Pandas使用.join()时报TypeError: sequence item 0: expected str instance, float found

报错修复方案

报错根因

TypeError: sequence item 0: expected str instance, float found是studio_dev_emp_year列存在NaN值导致:pandas读取CSV时,空单元格会默认转换为float类型的NaN,列表中存在该类型值时,join方法要求所有元素都是字符串类型,因此触发类型报错。你之前的修复逻辑没有生效,是因为没有提前对列做统一类型转换,同时循环内的赋值逻辑存在错误,额外新增了多余的无效列。

核心修改点

  • 读取CSV后统一将员工姓名列转为字符串类型,空值替换为空字符串
  • 构造员工分组字典时过滤空值,避免无效值进入待拼接列表
  • 修正循环内的错误赋值逻辑,避免新增多余列
  • 拼接前额外过滤非空字符串,做双重兼容

修复后完整代码

import pandas as pd
from copy import deepcopy

filepath = "C:/Users/Untitled Folder/studio_level_dev.csv"
df = pd.read_csv(filepath, encoding='utf-8')
# 统一员工姓名列为字符串类型,空值替换为空串
df["studio_dev_emp_year"] = df["studio_dev_emp_year"].fillna("").astype(str)

studio_dev_emp_year = {
    (year, dev_parent): list(
        df.loc[
            (df["year"] == year) & (df["dev_parent"] == dev_parent), "studio_dev_emp_year"
        ].dropna().values # 过滤空值
    )
    for year in df["year"].unique()
    for dev_parent in df["dev_parent"].unique()
}
studio_dev_emp_year = {key: value for key, value in studio_dev_emp_year.items() if value}

for i, row in df.iterrows():
    other_employees = deepcopy(studio_dev_emp_year)[(row["year"], row["dev_parent"])]
    current_emp = row["studio_dev_emp_year"]
    # 提前判断待移除值是否存在,避免空姓名场景下的报错
    if current_emp in other_employees:
        other_employees.remove(current_emp)
    # 仅拼接非空字符串值
    df.loc[i, "other_studio_emp"] = ",".join([emp for emp in other_employees if emp.strip()])
    
df.to_csv('studio_level.csv', mode='a', index=False, encoding="utf-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:03