如何检查系列中的值是唯一的

时间:2016-04-14 11:42:30

标签: python-3.x pandas unique

我正在尝试测试series中的值是否为唯一值。我知道series.unique可以在series中提供一系列唯一值,但不确定它在我的情况下是如何适合的。或者遍历series,但效率不高,所以我想知道有更好的方法吗?

2 个答案:

答案 0 :(得分: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 :(得分: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!!

通过这种方式,您可以定义要测试的确切值,并获取此值的实例数量。