2016-04-14 2 views
2

Ich versuche zu testen, ob ein Wert in einem series ist ein eindeutiger Wert. Ich weiß series.unique kann eine Reihe von einzigartigen Werten in der series geben, aber nicht sicher, wie es in meinem Fall passt. Oder iteriere durch die series, aber es ist nicht sehr effizient, also frage ich mich, gibt es einen besseren Weg, das zu tun?Wie überprüft man einen Wert in einer Serie ist einzigartig

Antwort

7

Sie können duplicated verwenden mit dem Parameter keep=False und dann umkehren boolean Series von ~:

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

Sie boolean Indizierung und integrierte in len() kombinieren konnte die genaue Höhe der Instanzen eines bestimmten Wert zu erhalten.

Angenommen, Ihre DataFrame sieht wie folgt aus:

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 

Sie können die Menge der Instanzen Wert 3 oder 1 wie diese:

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!! 

diese Weise können Sie den genauen Wert definieren können Sie wollen um zu testen und die Anzahl der Instanzen dieses Wertes zu erhalten.