我当前正在尝试比较熊猫dataframe中的两个列:
--------------- Cluster Assignment ---------------
ID Class Cluster
0 1000025 2 4
1 1002945 2 2
2 1015425 2 4
3 1016277 2 2
4 1017023 2 4
5 1017122 4 2
6 1018099 2 4
7 1018561 2 4
8 1033078 2 4
9 1033078 2 4
10 1035283 2 4
11 1036172 2 4
12 1041801 4 4
13 1043999 2 4
14 1044572 4 2
15 1047630 4 4
16 1048672 2 4
17 1049815 2 4
18 1050670 4 2
19 1050718 2 4
试图找到与我的数据框中找到错误比率不匹配的行数(完整的DF比这更长(。我正在使用 np.where()
进行比较,并且我得到了所有不正确行的准确输出,但是现在我想添加多少行是错误的,然后除以行总数。现在的问题是我得到了:
>>> data= np.where(df7['Class']!=df7['Cluster'])
>>> print(len(data))
1
如果我打印了Datai的类型GET < class 'tuple' >
。因此,我尝试使用以下方式从元组转换为列表:
>>> print(list(data))
[array([ 9, 11, 17, 31, 32, 33, 34, 36, 38, 62, 64, 65, 135,
156, 196, 201, 277, 301], dtype=int64)]
显然,这无济于事,因为如果我尝试打印/存储该列表的长度,我会得到
>>> print(list(data))
[array([ 9, 29, 30, 31, 33, 35, 59, 61, 62, 132, 153, 193, 198,
274, 298], dtype=int64)]
>>> print('errors: ', len(cluster2wrong))
errors: 1
有人可以将我指向我如何计算这些项目的方向吗?
np.where
的结果是包含n
数组的tuple
,其中n
是您数组中的尺寸的数量。好的新事物是,这些n
阵列中的每个阵列的长度相同(每个都代表每个发现的项目一个"索引"(,因此您可以使用其中任何一个的长度:
>>> len(data[0]) # or len(data[i]) where i < dimensions of your df7
如评论中已经提到的。但是,如果您只想知道有多少项目满足条件,则可以使用np.count_nonzero
:
>>> a = np.array([2,3,4,5])
>>> b = np.array([3,3,3,3])
>>> np.count_nonzero(a != b)
3