Python统计pandas列每行唯一单词数并新增对应列
逐行统计歌词唯一单词数量实现方法
你不需要写显式循环遍历行,pandas的apply方法可以直接逐行执行统计逻辑,核心思路是对单行歌词做「转小写→拆分为单词列表→转集合自动去重→计算集合长度」的操作,直接生成目标列即可。
基础实现代码
# 新增unique_count列,存储每行歌词的唯一单词计数 unique_wordsDF['unique_count'] = unique_wordsDF['clean_lyrics1'].apply( lambda lyric_line: len(set(lyric_line.lower().split())) )
高性能向量化写法(适合大数据量)
如果你的数据集量级在十万行以上,可以用pandas原生字符串向量化操作替换普通apply,运行速度更快,计算结果和基础写法完全一致:
unique_wordsDF['unique_count'] = unique_wordsDF['clean_lyrics1'].str.lower().str.split().apply(set).apply(len)
逻辑说明
- 你之前的代码是把所有行的单词都更新到同一个全局集合里,最终得到的是整个数据集全量的唯一单词池,不是逐行的统计结果,因此不需要提前初始化全局的
unique_words集合。 - 如果你的
clean_lyrics1列在之前的清洗步骤中已经完成了小写转换,可以去掉代码里的.lower()步骤进一步提升运行效率。 - 如果后续需要叠加其他统计规则(比如排除停用词、过滤特定长度的单词),直接在处理逻辑中补充对应规则即可。
结果验证
执行完上述代码后,可以用以下命令对照校验数值是否正确:
print(unique_wordsDF[['clean_lyrics1', 'unique_count']].tail())
内容的提问来源于stack exchange,提问作者SittingNap
相关产品推荐
相关产品推荐

