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

遍历Pandas DataFrame的Text列调用textstat函数时出现类型错误,求解决

解决TypeError: 'Series' objects are mutable, thus they cannot be hashed问题

你的报错原因很直观:在iterrows()循环里,变量j是整行的Series对象,而textstat.flesch_reading_ease()需要的是单个字符串文本,直接把Series传进去自然触发了哈希错误。下面给你两种解决思路:

修正方案1:精准获取Text列内容

只需要把循环里的j改成j['Text'],确保传入函数的是每行的文本字符串:

import textstat
import pandas as pd

csv = pd.read_csv('my_list_of_texts.csv')
for i, j in csv.iterrows():
    # 明确提取Text列的字符串值
    text_content = j['Text']
    score = textstat.flesch_reading_ease(text_content)
    # 可以顺便带上标题一起打印,更直观
    print(f"标题: {j['Title']}, 可读性评分: {score}")

更高效的方案:用apply批量处理

iterrows()在处理大数据集时效率偏低,推荐用pandas的apply方法直接对Text列批量计算,代码更简洁还更快:

import textstat
import pandas as pd

csv = pd.read_csv('my_list_of_texts.csv')
# 新增一列存储可读性评分
csv['Readability_Score'] = csv['Text'].apply(textstat.flesch_reading_ease)
# 打印标题和评分的对应结果
print(csv[['Title', 'Readability_Score']])
# 还可以把结果保存到新CSV文件
csv.to_csv('texts_with_readability.csv', index=False)

额外提醒

  • 如果你的Text列存在空值(NaN),建议先处理掉:csv = csv.dropna(subset=['Text']),避免空值传入函数引发新错误。
  • 如果文本包含特殊字符或非英文内容,可能需要先做清洗,保证textstat能正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:55