python - Python 中的排名/行号窗口函数

标签 python python-3.x pandas jupyter-notebook

我是 Python 新手,我需要下面这个示例的解决方案,这就是我的 df 的样子,

enter image description here

我只需要返回两条记录,一条记录 ID_Number 207921021,一条记录 ID_Number 222037001。使用下面的代码,当操作相同时,我能够根据分数 1 和分数 2 的最大值获取 ID_Number 222037001 的一条记录(在本例中为“投资”),

Data=Data.groupby(['ID_Number','Action'])['Score_1','Score_2'].max().reset_index()

下面是我的结果,

enter image description here

有没有办法只获取 ID_Number 207921021 的一条记录(这次操作列中有两个单独的值,即“使用”和“避免”)?我在 SQL 中使用了窗口函数,即使用 QUALIFY RANK() OVER (PARTITION BY ID_number, Action ORDER BY Score_1,Score_2 DESC)=1之前完成此操作。

Python中有类似的函数可以做到这一点吗?

最佳答案

这将按照您定义的排序方式为每个 ID_Number 选择一行。

df.sort_values(by=['Score_2', 'Score_1'], ascending=[False, True]).groupby(['ID_Number']).head(1)

输出:

    Action  ID_Number   Score_1     Score_2
3   Invest  222037001   9   0.4600
0   Use     207821021   7   0.4525

关于python - Python 中的排名/行号窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549028/

相关文章:

python - Jupyter 笔记本中的阻塞式交互式绘图

python - 如何使用python替换qml线系列中的多个点?

python-3.x - Python OpenCV - 如何保存 5 channel 图像

python - Pandas 两行具有相同的索引,如何更改它们

python - Pandas :用一些值(value)填充每一列

python - 使用 paramiko 和 exec_command 进行 SSH

python - 无法访问 Django 中的静态文件

python - 无法在 Komodo 中创建和运行新的 python 文件

python - 如何使用 pandas 将 Datetime 对象聚合为 int

python - kombu.exceptions.EncodeError : User is not JSON serializable 错误