如何统计列表元素在Pandas DataFrame列中的出现次数?
统计列表元素在DataFrame指定列中的出现次数
需求说明
给定元素列表xlst,统计列表中每个元素在DataFrame的col C列中按行出现的次数(每行只要包含该元素一次及以上,就算1次,而非统计元素在整列中的总出现频次),最终生成仅包含有出现记录的元素的结果DataFrame。
解决方案
以下是基于pandas的实现代码:
1. 构造示例数据
import pandas as pd xlst = ['pak', 'vector', 'word', 'po'] # 构造示例DataFrame data = { 'col A': ['pk-121', 'pk-112', 'pk-132', 'pk-321', 'pk-333'], 'col B': ['abc', 'xyz', 'agh', 'jkl', 'yul'], 'col C': ['pak is going great', 'word is word my friend', 'vector needs working', 'pak is winning', 'vector now'] } df = pd.DataFrame(data)
2. 统计并生成结果
# 遍历列表元素,统计每个元素在col C中出现的行数 count_dict = {word: df['col C'].str.contains(word).sum() for word in xlst} # 转换为DataFrame并过滤掉无出现记录的元素 result_df = pd.DataFrame.from_dict(count_dict, orient='index', columns=['count']).reset_index().rename(columns={'index': 'word'}) result_df = result_df[result_df['count'] > 0] print(result_df)
输出结果
word count 0 pak 2 1 word 1 2 vector 2
补充说明
如果需要统计元素在整列中的总出现频次(比如示例中word在第二行出现2次,统计结果为2),只需将str.contains替换为str.count即可:
count_dict = {word: df['col C'].str.count(word).sum() for word in xlst}
内容的提问来源于stack exchange,提问作者Jlow
相关产品推荐
相关产品推荐

