如何获取Python Pandas DataFrame中两列的唯一组合数量?
计算Pandas中两列的唯一组合数量
嘿,这个需求我平时处理数据时经常碰到,给你分享几个实用的实现方法,都能轻松得到你想要的结果:
方法1:用drop_duplicates()(最直观易读)
先提取a和b两列,去掉重复的组合后,直接计算剩余行数就行,代码逻辑一目了然:
unique_combinations_count = len(df[['a', 'b']].drop_duplicates())
这个方法的好处是新手也能快速理解,而且如果之后你需要查看这些唯一组合本身,只要去掉外层的len()就能拿到对应的DataFrame,非常灵活。
方法2:用groupby()的ngroups属性
通过按a和b两列分组,分组的总数就是唯一组合的数量,写法简洁且效率不错:
unique_combinations_count = df.groupby(['a', 'b']).ngroups
这个方法在处理大数据集时优势明显,因为Pandas的分组操作内部做了不少优化,运行速度会比一些循环类的方法快很多。
方法3:打包成元组后求唯一值(灵活但效率稍低)
把每一行的a和b值打包成元组,再计算元组的唯一值数量,适合需要临时组合多列的场景:
unique_combinations_count = len(df.apply(lambda row: (row['a'], row['b']), axis=1).unique())
不过要注意,当DataFrame行数很多时,apply()的效率会比前两种方法低,所以大数据集优先选前两种方案。
举个实际例子验证
假设你的DataFrame是这样的:
import pandas as pd df = pd.DataFrame({ 'a': [1,1,2,1], 'b': ['x','y','x','x'], # 其他无关列... })
用上面任意一种方法,都会返回3,正好匹配你预期的结果~
内容的提问来源于stack exchange,提问作者quantumbutterfly
相关产品推荐
相关产品推荐

