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

Python处理CSV无逗号列时用For循环统计词数异常问题咨询

问题1解答

你看到的逗号是Python列表的默认元素分隔符,并非新增到数据里的内容。你调用str.split()会把每条评论文本按空格切分成由多个词组成的列表,列表在输出展示时会自动用逗号分隔不同元素,和原始CSV的内容无关。
你观察到的“重复输出第一行列表”也不是真的内容重复,是因为你把print(num_word)写在了for循环内部:第一次循环把第一条评论的词列表加入容器后打印整个列表,第二次循环加入第二条评论的词列表后再打印完整的容器内容,以此类推,所以前几次输出会看起来包含前面重复的内容。

问题2解答

你的代码存在两个核心问题:

  1. 没有实际执行词数统计逻辑:你只是把每条评论切分后的词列表存入了num_word容器,没有取每个词列表的长度(也就是单条评论的词数)。
  2. 没有处理空值:你认为情况1报错是数据量过大,实际大概率是Comments列存在空值(NaN),str.split()处理空值会返回NaN,迭代时就会触发报错,和数据量无关。

可正常统计词数的实现代码

写法1:保留循环逻辑的修正版

num_word = []
# 先过滤掉Comments列为空的行,再做切分和统计
for comment_words in data_negative['Comments'].dropna().str.split():
    # 取切分后列表的长度,就是单条评论的词数
    word_count = len(comment_words)
    num_word.append(word_count)
# 循环结束后再打印全部词数结果,不需要放在循环里
print(num_word)
# 如果要把词数作为新列存回原表,可以加这行
data_negative['word_count'] = data_negative['Comments'].dropna().str.split().str.len()

写法2:更高效的Pandas向量化写法(不需要写循环)

# 直接生成词数列,空值对应的词数会设为0
data_negative['word_count'] = data_negative['Comments'].str.split().str.len().fillna(0).astype(int)
# 输出所有评论的词数列表
print(data_negative['word_count'].tolist())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:30:02