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

执行K-means Clustering前数据索引分配遇TypeError,求修复方案

问题分析与解决

错误原因

  1. cursor.fetchall() 默认返回元组列表,你试图用字符串索引访问元组,直接触发TypeError。
  2. 你错误地将.split()写在了键名里,这是语法错误——应该先获取字段值,再对值调用split()方法。
  3. 代码里co未初始化就累加,还有未使用的ro变量,属于冗余代码。

修复方案

方案1:用元组位置索引访问字段

因为SQL查询的第一个字段是CPC-Current-DWPI,所以用j[0]获取该字段值,再做分割处理:

with connection:
    with connection.cursor() as cursor:
        sql = """
              SELECT `CPC-Current-DWPI`,`Assignee/Applicant First` FROM final.f01l_patent;
              """
        cursor.execute(sql)
        result = cursor.fetchall()
        
        count = []
        # 遍历1-9的目标值
        for i in range(1, 10):
            co = 0  # 每次循环初始化计数器
            for j in result :
                # 获取CPC字段值并分割
                cpc_parts = j[0].split()
                # 先判断列表长度,避免索引越界
                if len(cpc_parts) > 3 and cpc_parts[3] == str(i):
                    co += 1
            count.append(co)

方案2:改用字典游标(更直观)

让游标返回字典列表,这样可以直接用字段名访问值,代码可读性更高:

with connection:
    # 创建字典游标,返回结果为字典列表
    with connection.cursor(dictionary=True) as cursor:
        sql = """
              SELECT `CPC-Current-DWPI`,`Assignee/Applicant First` FROM final.f01l_patent;
              """
        cursor.execute(sql)
        result = cursor.fetchall()
        
        count = []
        for i in range(1, 10):
            co = 0
            for j in result :
                # 直接用字段名获取值
                cpc_value = j['CPC-Current-DWPI']
                cpc_parts = cpc_value.split()
                if len(cpc_parts) > 3 and cpc_parts[3] == str(i):
                    co += 1
            count.append(co)

额外提示

  • 注意split()分割后的列表索引是从0开始的,cpc_parts[3]对应分割后的第4个元素,确认这是你需要的位置。
  • 增加len(cpc_parts) > 3的判断,避免部分CPC字段值过短导致的索引越界错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:30:42