基于关键词列表生成DataFrame新列并统计词频的实现求助
解决方案:为DataFrame按关键词生成计数列
问题说明
需要根据关键词列表key_words = ['apple', 'animal', 'everyone'],为输入的DataFrame新增对应关键词的列,统计每行描述中该关键词的出现次数(忽略大小写)。
实现代码
首先构造示例DataFrame,然后通过pandas.Series.str.count()方法完成计数:
import pandas as pd # 构造输入DataFrame data = { 'id': [1, 2, 3], '描述': [ 'Apple is a healthy fruit. Everyone should eat it.', 'Lion is a dangerous animal.', 'Everyone likes him.' ], 'xx': ['..', '..', '..'] } df = pd.DataFrame(data) # 定义关键词列表 key_words = ['apple', 'animal', 'everyone'] # 为每个关键词生成计数列 for word in key_words: # 使用str.count,设置case=False忽略大小写 df[word] = df['描述'].str.count(word, case=False) # 查看结果 print(df)
代码解释
str.count(word, case=False):统计每行文本中指定关键词的出现次数,case=False确保大小写不敏感匹配(比如"Apple"会被计入"apple"的计数)。- 循环遍历关键词列表,为每个关键词新增一列,列名就是关键词本身,值为对应行的出现次数。
输出结果
运行代码后得到的DataFrame与期望输出一致:
| id | 描述 | xx | apple | animal | everyone |
|---|---|---|---|---|---|
| 1 | Apple is a healthy fruit. Everyone should eat it. | .. | 1 | 0 | 1 |
| 2 | Lion is a dangerous animal. | .. | 0 | 1 | 0 |
| 3 | Everyone likes him. | .. | 0 | 0 | 1 |
内容的提问来源于stack exchange,提问作者Kas
相关产品推荐
相关产品推荐

