我目前正在尝试比较pandas 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的类型获取< 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
有人能指出我如何计算这些物品的方向吗?
答案 0 :(得分:2)
np.where
的结果是包含tuple
数组的n
,其中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