pandas - 通过保留第 n 个最大值来减少 pandas 数据帧
问题描述
假设我有以下数据框:
id1 dt id2 count
0 2010-02-06 07:21:45 id0 78
0 2010-02-06 07:21:45 id1 79
0 2010-02-06 07:21:45 id2 80
0 2010-02-06 07:21:45 id3 69
0 2010-02-06 07:58:25 id4 58
1 2010-02-06 07:58:25 id0 67
我想为每个“dt”保留由较高“计数”选择的第 n 个最多的“id2”。因此,对于 nth=3,获得:
id1 dt id2 count
0 2010-02-06 07:21:45 id0 78
0 2010-02-06 07:21:45 id1 79
0 2010-02-06 07:21:45 id2 80
0 2010-02-06 07:58:25 id4 58
1 2010-02-06 07:58:25 id0 67
它还应该检测到多个“id2”。因此,如果输入是:
id1 dt id2 count
0 2010-02-06 07:21:45 id0 78
0 2010-02-06 07:21:45 id1 79
0 2010-02-06 07:21:45 id2 80
0 2010-02-06 07:21:45 id2 79
0 2010-02-06 07:21:45 id3 69
0 2010-02-06 07:58:25 id4 58
1 2010-02-06 07:58:25 id0 67
它必须返回 nth=3
id1 dt id2 count
0 2010-02-06 07:21:45 id0 78
0 2010-02-06 07:21:45 id1 79
0 2010-02-06 07:21:45 id2 80
0 2010-02-06 07:58:25 id4 58
1 2010-02-06 07:58:25 id0 67
解决方案
这应该有效:
df = df.sort_values("count", ascending=False).groupby(["dt", "id2"], as_index=False).first()
df = df.groupby("dt").apply(lambda x: x.iloc[0:3]).reset_index(drop=True)
推荐阅读
- javascript - 使用 useContext 钩子设置播放器的全局状态防止组件重新渲染
- flutter - 使用 GlobalKey 从父小部件调用子小部件中的方法
- flutter - Flutter:使用拖曳下拉按钮从另一个加载一个时出现错误
- python - 如何在按下和释放鼠标时存储鼠标位置?
- mediawiki - AD 组授权 - 用户未授权
- powerbi - Power BI - 计算客户运行逾期余额
- javascript - React native - 使用 android studio 编译包
- c++ - OpenCL 内核计时测量 0 秒或导致 SIGABRT
- google-apps-script - Google Script,for循环在达到其条件之前停止,导致它无法继续通过未检查的数据
- javascript - useEffect 缺少依赖项,但是当我添加它时,出现“超出最大更新深度”错误