如何统计Pandas DataFrame列中逗号分隔字符串的唯一值数量
实现方法
核心逻辑是先统一列值类型为字符串,按逗号拆分后通过集合去重统计长度,全程用pandas内置向量化方法,性能优于逐行循环,同时兼容x列所有存储类型。
完整实现代码
import pandas as pd # 测试用DataFrame(可替换为实际业务数据) df = pd.DataFrame({ 'x': ['5,5,6,7,8,6,8', '5,9,8,0', '5,9,8,0', '3,2', '5,5,6,7,8,6,8'] }) # 新增Unique_in_x列计算唯一值个数 df['Unique_in_x'] = ( df['x'] .astype(str) # 统一转字符串,兼容数字、混合类型等所有存储场景 .str.split(',') # 按逗号把单元格内容拆分为值列表 .apply(lambda cell_val: len(set(cell_val))) # 转集合自动去重后计算长度 )
结果验证
执行代码后得到的输出完全匹配预期结果:
| x | Unique_in_x |
|---|---|
| 5,5,6,7,8,6,8 | 4 |
| 5,9,8,0 | 4 |
| 5,9,8,0 | 4 |
| 3,2 | 2 |
| 5,5,6,7,8,6,8 | 4 |
边界场景适配
如果数据里逗号前后存在多余空格(比如"5, 6 , 8"这类带格式的字符串),可以把拆分逻辑替换为正则拆分,自动忽略空格干扰,避免把带空格的同值识别为不同项:
df['Unique_in_x'] = ( df['x'] .astype(str) .str.split(r'\s*,\s*') # 匹配逗号前后任意数量的空白字符 .apply(lambda cell_val: len(set(cell_val))) )
内容的提问来源于stack exchange,提问作者anjali joshi
相关产品推荐
相关产品推荐

