我是 Python 新手,我需要下面这个示例的解决方案,这就是我的 df 的样子,
我只需要返回两条记录,一条记录 ID_Number 207921021,一条记录 ID_Number 222037001。使用下面的代码,当操作相同时,我能够根据分数 1 和分数 2 的最大值获取 ID_Number 222037001 的一条记录(在本例中为“投资”),
Data=Data.groupby(['ID_Number','Action'])['Score_1','Score_2'].max().reset_index()
下面是我的结果,
有没有办法只获取 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/