保留 pandas 列中项目出现次数最多的数据框行
Retaining pandas dataframe rows which have maximum number of item occurrences in a column
我有一个 pandas 数据框
import pandas as pd
df =pd.DataFrame({'name':['john','joe','bill','richard','sam'],
'cluster':['1','2','3','1','2']})
df['cluster'].value_counts()
将根据列 cluster
.
给出项目出现的次数
是否可以仅保留在列 cluster
中出现次数最多的行?
预期输出为
簇 1 和 2 的出现次数相同,因此需要保留簇 1 和 2 的所有行。
按 'cluster' 分组并使用 transform('count')
获得一系列具有适当形状的簇。然后用它来仅屏蔽对应于最大出现次数的行。
cluster_counts = df.groupby('cluster')['name'].transform('count')
res = df[cluster_counts == cluster_counts.max()]
输出:
>>> res
name cluster
0 john 1
1 joe 2
3 richard 1
4 sam 2
设置:
import pandas as pd
df = pd.DataFrame({'name':['john','joe','bill','richard','sam'],
'cluster':['1','2','3','1','2']})
你可以通过df['cluster'].value_counts()
获取cluster
值的最大计数,然后使用isin
过滤cluster
列
c = df['cluster'].value_counts()
out = df[df['cluster'].isin(c[c.eq(c.max())].index)]
print(out)
name cluster
0 john 1
1 joe 2
3 richard 1
4 sam 2
使用这个
# find the most common clusters then filter those clusters
df[df.cluster.isin(df.cluster.mode())]
我有一个 pandas 数据框
import pandas as pd
df =pd.DataFrame({'name':['john','joe','bill','richard','sam'],
'cluster':['1','2','3','1','2']})
df['cluster'].value_counts()
将根据列 cluster
.
是否可以仅保留在列 cluster
中出现次数最多的行?
预期输出为
簇 1 和 2 的出现次数相同,因此需要保留簇 1 和 2 的所有行。
按 'cluster' 分组并使用 transform('count')
获得一系列具有适当形状的簇。然后用它来仅屏蔽对应于最大出现次数的行。
cluster_counts = df.groupby('cluster')['name'].transform('count')
res = df[cluster_counts == cluster_counts.max()]
输出:
>>> res
name cluster
0 john 1
1 joe 2
3 richard 1
4 sam 2
设置:
import pandas as pd
df = pd.DataFrame({'name':['john','joe','bill','richard','sam'],
'cluster':['1','2','3','1','2']})
你可以通过df['cluster'].value_counts()
获取cluster
值的最大计数,然后使用isin
过滤cluster
列
c = df['cluster'].value_counts()
out = df[df['cluster'].isin(c[c.eq(c.max())].index)]
print(out)
name cluster
0 john 1
1 joe 2
3 richard 1
4 sam 2
使用这个
# find the most common clusters then filter those clusters
df[df.cluster.isin(df.cluster.mode())]