【发布时间】:2019-06-11 17:35:50
【问题描述】:
我是 Python 新手,我需要下面这个示例的解决方案,这就是我的 df 的样子,
我只需要返回两条记录,一条用于 ID_Number 207921021,一条用于 ID_Number 222037001。使用下面的代码,当 Action 相同时,我可以根据 Score 1 和 Score 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和Action进行分区,那么您将获得该ID_Number的2 条记录,因为有2 个不同的操作。你打算如何决定哪一个?您的 SQL 也会返回两行。 -
要提取ID_Number 207921021下的哪条记录? 'Score_2' 值较高的那个?
-
我想要'Score_2'值最高的那个@Nev1111
-
@TomNash 理想情况下,我希望使用基于最高 'Score_2' 值的操作
-
@Jude92 查看更新结果
标签: python python-3.x pandas jupyter-notebook