簡體   English   中英

保留一列中出現最多項目次數的熊貓數據框行

[英]Retaining pandas dataframe rows which have maximum number of item occurrences in a column

我有一個熊貓數據框

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 的所有行。

用這個

# find the most common clusters then filter those clusters
df[df.cluster.isin(df.cluster.mode())]

在此處輸入圖像描述

按 '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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM