我已经使用了一种凝聚算法来集群一个分解的数据帧(这是有效的)。在此数据帧中,NaN值显示为-1,但我不希望将它们作为算法的输入数据。我想我必须设置某种界限,指定只应考虑=>0值,但我不确定如何做到这一点。下面我展示了我的算法代码和dataframe z输出的一部分。
z=df.apply(lambda x: pd.factorize(x)[0])
cluster = AgglomerativeClustering(n_clusters=None,distance_threshold=(10), affinity='euclidean', linkage='ward')
cluster.fit_predict(z)
数据帧z的一部分:
0 0 0 0 0 ... 0 -1 -1 -1
1 0 0 0 0 ... -1 -1 -1 -1
2 0 0 0 0 ... 1 -1 -1 -1
3 0 0 0 0 ... -1 -1 -1 -1
4 0 0 0 0 ... 0 -1 -1 -1
5 0 0 0 0 ... 0 -1 -1 -1
6 0 0 0 0 ... 0 -1 -1 -1
7 0 0 0 0 ... 0 -1 -1 -1
8 0 0 0 0 ... 0 -1 -1 -1
9 0 0 0 0 ... -1 -1 -1 -1
10 0 1 1 1 ... 0 -1 -1 -1
11 0 1 1 1 ... -1 -1 -1 -1
12 0 2 1 2 ... 0 -1 -1 -1
13 0 2 1 2 ... -1 -1 -1 -1
14 0 3 1 3 ... 0 -1 -1 -1
15 0 3 1 3 ... -1 -1 -1 -1
16 1 4 1 4 ... 0 -1 -1 -1
17 1 4 1 4 ... 1 -1 -1 -1
发布于 2021-07-06 12:02:15
在创建z
之前,需要先调用DataFrame.dropna()
。你可以在pandas docs上阅读更多。
df.dropna(inplace=True)
https://stackoverflow.com/questions/68269591
复制相似问题