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
模式
fromscipy
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因为其简单的语法而更容易成为攻击目标。很抱歉,我认为人们不想看到我失败的尝试,会用它来编辑文章。