python - 从 groupby 中选择具有最高值的行
问题描述
我有一个数据框,其中包含一些有关用户的信息。有一个用户列、类型列和计数列,如下所示:
name type count
robert x 123
robert y 456
robert z 5123
charlie x 442123
charlie y 0
charlie z 42
我试图找出每个名称的计数最高的类型,所以对于这种情况,我想选择这个:
name type count
robert z 5123
charlie x 442123
我知道我可以做这样的事情来获得每个名称的最大计数,但我不确定如何包含“类型”列,这实际上是最重要的
df.sort_values('count', ascending=False).drop_duplicates('name').sort_index()
任何帮助是极大的赞赏!
解决方案
试试这个
df.loc[df.groupby('name')['count'].idxmax()]['type']
name type count
3 charlie x 442123
2 robert z 5123
如果您不仅想要一个最大值,还想要n
每组的最高值(例如n = 2
)
df.loc[df.groupby('name')['count'].nlargest(2).index.get_level_values(1)]
name type count
3 charlie x 442123
5 charlie z 42
2 robert z 5123
1 robert y 456
推荐阅读
- javascript - 将网站上的所有音频源连接到 AudioContext
- javascript - 反应流更改节点名称
- javascript - 尝试使用 JointJs 时未捕获的 TypeError
- node.js - NodeJS - 没有这样的文件或目录,scandir '/static/reports/'
- android - 有没有办法让 woocommerce 插件离线工作
- python - 变量不会在课堂上更新
- verilog - 我的代码在“生成 fulladder”附近有什么问题(错误:未定义模块)?
- python - 在 Pip 安装期间将非 Python 文件复制到特定目录
- css - v-bind 类不改变对象属性的 css
- angular - 使用路由时如何从 app.component.ts 调用 API