我正在尝试测试series
中的值是否为唯一值。我知道series.unique
可以在series
中提供一系列唯一值,但不确定它在我的情况下是如何适合的。或者遍历series
,但效率不高,所以我想知道有更好的方法吗?
答案 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
您可以像这样获得值3
或1
的实例数量:
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!!
通过这种方式,您可以定义要测试的确切值,并获取此值的实例数量。