2016-04-14 61 views
2

我想測試一個series中的值是否是唯一值。我知道series.unique可以在series中給出一個唯一值的數組,但不確定它適合我的情況。或者遍歷series,但效率不高,所以我想知道有沒有更好的方法來做到這一點?如何檢查一個系列中的值是唯一的

回答

7

可以使用duplicated與參數keep=False然後反轉布爾Series通過~

print df 
    col 
0 a 
1 b 
2 a 
3 b 
4 c 

print df.col.duplicated(keep=False) 
0  True 
1  True 
2  True 
3  True 
4 False 
Name: col, dtype: bool 

print ~df.col.duplicated(keep=False) 
0 False 
1 False 
2 False 
3 False 
4  True 
Name: col, dtype: bool 
1

您可以結合布爾索引和內置len()獲取給定值的情況下的確切數額。

假設你DataFrame看起來像這樣:

In [155]: test_1 = pd.DataFrame(np.array([1,2,3,3,4]), columns=['A']) 

In [156]: test_1 
Out[156]: 
    A 
0 1 
1 2 
2 3 
3 3 
4 4 

你可以得到的值31實例的數量是這樣的:

In [158]: len(test_1[test_1.A == 3]) 
Out[158]: 2 ## two instances make for non-unique value 

In [159]: len(test_1[test_1.A == 1]) 
Out[159]: 1 ## Unique value!! 

這種方式,你可以定義你想要的精確值測試並獲取此值的實例數量。

相關問題