这是我的数据集示例:
column1 | column2 |
---|---|
A | 苹果 |
A | 香蕉 |
A | 菠萝 |
B | 苹果 |
B | 香蕉 |
C | 葡萄 |
C | 香蕉 |
C | 苹果 |
C | 普通话 |
D | 苹果 |
D | 香蕉 |
我想应用分组方法并列出第 1 列中最常见的组。例如,我的输出应将生产(苹果、香蕉)作为最常见的组。
谢谢!
答案 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