进行分组并找到最常见的组

时间:2021-06-26 00:45:45

标签: python pandas pandas-groupby

这是我的数据集示例:

<头>
column1 column2
A 苹果
A 香蕉
A 菠萝
B 苹果
B 香蕉
C 葡萄
C 香蕉
C 苹果
C 普通话
D 苹果
D 香蕉

我想应用分组方法并列出第 1 列中最常见的组。例如,我的输出应将生产(苹果、香蕉)作为最常见的组。

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用 DataFrame.GroupBy 方法,然后,您可以使用 count() 方法:

df = pd.DataFrame(columns=['column1', 'column2'], data =[['A',  'apple'],
['A',   'banana'],
['A',   'pineapple'],
['B',   'apple'],
['B',   'banana'],
['C',   'grape'],
['C',   'banana'],
['C',   'apple'],
['C',   'mandarine'],
['D',   'apple'],
['D',   'banana']])

df_result = df.groupby('column2').count()
df_result = df_result[df_result['column1'] == max(df_result['column1'])]

输出:

   column2  column1
0   apple      4
1   banana     4

编辑:根据问题,您想要作为输出 ('apple', 'banana')。所以,继续上面的数据,你可以:

result_ruple = tuple((value for _, value in df_result['column2'].items()))

输出:('apple', 'banana')

答案 1 :(得分:1)

试试这个:

df.groupby('column2')['column1'].nunique()

输出:

column2
apple        4
banana       4
grape        1
mandarine    1
pineapple    1
Name: column1, dtype: int64

那么,

s = df.groupby('column2')['column1'].nunique()
s[s == s.max()].reset_index()

输出:

  column2  column1
0   apple        4
1  banana        4

答案 2 :(得分:1)

类似于 mode

df.drop_duplicates().column2.mode()
Out[156]: 
0     apple
1    banana
dtype: object
相关问题