分组和获取最多的频率

2024-06-14 22:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

    col1     col2
0   maria    apple
1   eugene   apple
2   eugene   banana
3   maria    apple
4   maria    pear
5   eugene   banana
6   maria    apple

我想按个人分组,看看对这个人来说最常见的水果是什么,比如:

    col1     col2    col3
0   maria    apple   3
1   eugene   banana  2

编辑到目前为止我完成的是:

    col1     col2
   maria    apple   2
            pear    1
   eugene   banana  2
            apple   1

df.groupby('col1')['col2'].value_counts()

但我不知道如何得到最大值,因为它是一个系列,而不是一个数据帧


Tags: 数据编辑appledfvaluecol2col3col1
3条回答

mode来自scipy

from scipy import stats

df.groupby('col1').col2.apply(stats.mode)
Out[530]: 
col1
eugene    ([banana], [2])
maria      ([apple], [3])
Name: col2, dtype: object

IIUC公司:

df.groupby('col1')['col2'].apply(lambda x: x.value_counts().head(1))

输出:

col1          
eugene  banana    2
maria   apple     3
Name: col2, dtype: int64

首先在col1上使用groupby(),使用value_counts()获得频率,然后使用sort_values()函数按降序对值排序

a = pd.DataFrame({"col1": ["maria","eugene","eugene","maria","maria","eugene","maria"],
          "col2": ["apple", "apple","banana","apple","pear","banana","apple"]})  
a.groupby(["col1"])["col2"].value_counts().sort_values(ascending=False)

相关问题 更多 >