Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分组并获取最频繁的行_Python_Pandas - Fatal编程技术网

Python 分组并获取最频繁的行

Python 分组并获取最频繁的行,python,pandas,Python,Pandas,我有这样一个数据帧: 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
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
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

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

IIUC:

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

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

模式
from
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
首先在
col1
上使用
groupby()
,使用
value\u counts()
获取频率,然后使用
sort\u 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)

@Drise,这是因为越来越多的“功能用户”——既不是专业的程序员,也不是热心的程序员。更多的人只是想把事情做完。Python因为其简单的语法而更容易成为攻击目标。很抱歉,我认为人们不想看到我失败的尝试,会用它来编辑文章。