如何统计DataFrame列中忽略逗号后的独立元素唯一出现次数?
问题描述
现有一个包含10000行的DataFrame,其中A列存在多种逗号分隔的取值组合,示例如下:
+ + Index | A | B +--------------|---------|----------+ | | 1 |Y,Z | nan | | 2 |Y,Z,X | 2 | | 3 |Z | 7 | | 4 |nan | 1 + +
需要从A列中统计每个独立元素的出现次数(忽略逗号),期望结果为:
Z = 3 Y = 2 X = 1
而非统计逗号分隔的组合次数(如下所示,非需求结果):
Y,Z = 1 Y,Z,X = 1 X = 1
实现方法
用Pandas的字符串处理与堆叠功能即可快速实现,具体步骤及代码如下:
import pandas as pd # 假设你的DataFrame名为df # 1. 过滤A列空值,拆分字符串后展开为一维序列 elements = df['A'].dropna().str.split(',', expand=True).stack() # 2. 统计元素频次并按降序排列 count_result = elements.value_counts().sort_values(ascending=False) # 3. 按目标格式输出结果 for elem, cnt in count_result.items(): print(f"{elem} = {cnt}")
代码说明
dropna():移除A列空值行,避免拆分空值时出现异常str.split(',', expand=True):将每个单元格的字符串按逗号拆分为多列.stack():把多列元素堆叠成一维序列,让每个独立元素单独占一行value_counts():自动统计每个元素的出现次数,默认按频次降序排列
运行上述代码后,就能得到符合需求的独立元素统计结果。
内容的提问来源于stack exchange,提问作者Sumit
相关产品推荐
相关产品推荐

