我们说我在pandas中有这个数据框
a b
1 203 487
2 876 111
3 203 487
4 876 487
还有更多我不关心的专栏
我知道len(df.a.unique())
将返回2表示a有两个唯一值,len(df.b.unique())
也是如此。我想要类似于此的东西,但返回发生的AND b的唯一组合的数量。所以在这个例子中,我希望它返回3.
对于如何进行此操作的任何指导都表示赞赏
答案 0 :(得分:1)
print (df.drop_duplicates(['a','b']))
a b
1 203 487
2 876 111
4 876 487
a = len(df.drop_duplicates(['a','b']).index)
或duplicated
具有反转条件:
a = (~df.duplicated(['a','b'])).sum()
a = len(df.index) - df.duplicated(['a','b']).sum()
或者将列转换为字符串并连接在一起,然后获取nunique
:
a = (df.a.astype(str) + '_' + df.b.astype(str)).nunique()
print (a)
3
答案 1 :(得分:1)
您是否将下面的案例视为两种不同的组合或一种?
1)' a'是203和' b'是487 2)' a'是487和' b'是203
如果你想把它作为两个,只需使用drop_duplicates,因为jezrael说。如果你想让它们算作一个独特的组合,我会创建一个新列,所以它总是:较小的number_the较大的数字,并在此列上执行drop_duplicates。
table table td{border-left:1px solid #ffffff;border-right:1px solid #ffffff;}
table table td table td{border:0px;}
/* the above CSS is for visual purpose only */