python - 过滤每人 2 个最高的唯一值
问题描述
我被困在我的项目中的数据争论步骤中,我想知道是否有人能够帮助我。
我拥有的数据框的一部分是这样的:
人 | 月 | GPI |
---|---|---|
1 | 12 | 10 |
1 | 12 | 12 |
1 | 11 | 18 |
1 | 10 | 20 |
2 | 10 | 12 |
2 | 8 | 14 |
2 | 9 | 16 |
但是,我按 Person 分组,只保留 2 个最大的唯一月份值的行。因此,对于第 1 个人,这将是第 12 和第 11 个月,对于第 2 个人,这将是第 10 和第 9 个月。最终我想平均每人的 GPI。
该表应如下所示
人 | 月 | GPI | avg_GPI |
---|---|---|---|
1 | 12 | 10 | 8 |
1 | 12 | 7 | 8 |
1 | 11 | 7 | 8 |
2 | 10 | 12 | 14 |
2 | 9 | 16 | 14 |
希望其他人可以帮助我解决这个问题。
这是创建第一个表的代码: import pandas as pd
df = pd.DataFrame({'Person':[1, 1, 1, 1, 2, 2, 2],
'month':[12, 12, 11, 10, 10, 8, 9],
'GPI':[10, 12, 18, 20, 12, 14, 16]})
提前致谢!
解决方案
推荐阅读
- ffmpeg - 使用 ffmpeg 使安静的音频部分静音
- c++ - 为什么 A* 没有找到任何路线?
- r - 如何使用 R 为异构数据类型(表包含数字、逻辑、字符、NA 和空单元格)生成热图?(还没解决)
- angular - Angular 5 - 基本计时器对象未在 UI 中更新
- r - SelectInput 和 dateRangeinput 函数
- android - 隐式 Intent 文件共享中的 FileNotFound(无效路径)
- c# - C#,将值从一个 int 复制到另一个 int 的最简单方法是什么?
- docker - selenium with behat:无法找到会话提供者
- javascript - AngularJS如何处理excel文件而不会因为列名而出错
- python - 当 PNG 有效时,PyPng 抛出签名 FormatError