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

Pandas读取Excel列名无效及Series无iterrows方法问题求助

问题解决方案

错误1:ValueError: Invalid column name: Open_AI_Text

  • 问题原因:pd.read_excel的usecols参数传入字符串时,会被解析为列范围标识符(如"A:C"),而非单个列名,导致无法匹配到Open_AI_Text列。
  • 修复方法:将usecols改为列表形式,明确指定目标列:
df = pd.read_excel("Output_Summarization/OUTPUT_ocr_OPENAIGOOD.xlsx", usecols=["Open_AI_Text"])

错误2:AttributeError: 'Series' object has no attribute 'iterrows'

  • 问题原因:直接将df["Open_AI_Text"]赋值给df,会把原DataFrame转换为Series(单列数据结构),而iterrows()是DataFrame独有的方法,Series不支持该操作。
  • 修复方法:保留原DataFrame结构,直接基于读取后的DataFrame进行迭代操作即可。

完整修复后的代码(含潜在问题优化)

原代码还存在未导入random模块、replace会删除所有匹配单词等隐藏问题,以下是修正后的完整代码:

import pandas as pd
import nltk
import random
from nltk.tokenize import word_tokenize

# 首次运行需下载nltk分词资源
nltk.download('punkt')

# 正确读取指定列
df = pd.read_excel("Output_Summarization/OUTPUT_ocr_OPENAIGOOD.xlsx", usecols=["Open_AI_Text"])

# 遍历每一行处理文本
for index, row in df.iterrows():
    text = row["Open_AI_Text"]
    # 处理整数/浮点数类型,先转为字符串
    if not isinstance(text, str):
        text = str(text)
    
    words = word_tokenize(text)
    if len(words) <= 1:
        # 避免文本仅含一个单词时无法执行删除
        continue
    
    # 通过下标删除随机选中的单个单词,避免批量替换
    remove_idx = random.randint(0, len(words)-1)
    new_words = words[:remove_idx] + words[remove_idx+1:]
    new_text = " ".join(new_words)
    
    # 更新DataFrame中的对应行
    df.at[index, "Open_AI_Text"] = new_text

# 保存处理后的结果
df.to_excel("Texte_Trou.xlsx", index=False)

额外优化说明

  • 新增非文本类型(整数/浮点数)转换逻辑,避免分词报错;
  • 改用下标删除单词,解决replace批量删除匹配项的问题;
  • 添加文本长度判断,防止单单词文本引发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:50:31