这是一个虚构的例子:
id cluster
1 3
2 3
3 3
4 1
5 5
因此,id
4和5的集群应该替换为某些文本。
因此,我能够使用以下方法找到频率小于3的值:
counts = distclust.groupby("cluster")["cluster"].count()
counts[counts < 3].index.values
现在,我不确定是否会使用一些任意文本(即#34;噪音&#34;)替换我的数据框中的这些值。
我认为这是足够的信息,如果您希望我包含其他内容,请与我联系:
答案 0 :(得分:3)
In [82]: df.groupby('cluster').filter(lambda x: len(x) <= 2)
Out[82]:
id cluster
3 4 1
4 5 5
更新
In [95]: idx = df.groupby('cluster').filter(lambda x: len(x) <= 2).index
In [96]: df.loc[idx, 'cluster'] = -999
In [97]: df
Out[97]:
id cluster
0 1 3
1 2 3
2 3 3
3 4 -999
4 5 -999
答案 1 :(得分:2)
df.cluster.replace((df.cluster.value_counts()<=1).replace({True:'noise',False:np.nan}).dropna())
Out[627]:
0 3
1 3
2 3
3 noise
4 noise
Name: cluster, dtype: object
分配后
df.cluster=df.cluster.replace((df.cluster.value_counts()<=1).replace({True:'noise',False:np.nan}).dropna())
df
Out[629]:
id cluster
0 1 3
1 2 3
2 3 3
3 4 noise
4 5 noise