如何统计DataFrame中字母数字列内各字符的出现次数
统计DataFrame字母数字列中各字符的出现次数
问题场景
现有包含字母数字列的DataFrame,需统计列内0-9、A-Z每个字符的总出现次数,示例如下:
输入DataFrame
Serial 03000395 A000458B 667BC345
期望输出
Character Counts 0 7 1 0 2 0 3 3 ... A 1 B 2 C 1 ... Z 0
解决方案
可以通过以下Python代码实现需求,基于pandas和collections模块:
import pandas as pd from collections import Counter # 初始化示例DataFrame df = pd.DataFrame({ 'Serial': ['03000395', 'A000458B', '667BC345'] }) # 将列中所有字符串拼接为单个长字符串 all_characters = ''.join(df['Serial'].astype(str)) # 统计每个字符的出现次数 char_counter = Counter(all_characters) # 生成需要统计的完整字符列表:0-9 + A-Z target_chars = [str(num) for num in range(10)] + [chr(ord('A') + idx) for idx in range(26)] # 构建结果DataFrame,缺失字符的计数填充为0 result_df = pd.DataFrame({ 'Character': target_chars, 'Counts': [char_counter.get(char, 0) for char in target_chars] }) # 打印结果 print(result_df)
代码说明
- 拼接字符串:用
join把Serial列的所有内容合并成一个长字符串,方便统一统计。 - 字符计数:
Counter会自动统计每个字符的出现次数,返回一个字典结构。 - 生成完整字符集:手动构造0-9和A-Z的所有字符,确保结果包含所有目标字符,哪怕出现次数为0。
- 构建结果:通过列表推导式遍历完整字符集,用
get方法获取计数(不存在则返回0),最终整理成DataFrame。
内容的提问来源于stack exchange,提问作者Suresh Sridharan
相关产品推荐
相关产品推荐

