Python 如何在两列之间查找最新实例,并从该实例的不同列中获取a值?
我有一个比赛历史数据集,我想为球员找到最新的elo。我正在使用python和pandas,数据集的示例如下:Python 如何在两列之间查找最新实例,并从该实例的不同列中获取a值?,python,pandas,sorting,pandas-groupby,Python,Pandas,Sorting,Pandas Groupby,我有一个比赛历史数据集,我想为球员找到最新的elo。我正在使用python和pandas,数据集的示例如下: tournament_date winner_id loser_id winner_elo loser_elo winner_delta loser_delta other_columns ----------------- ------------ ---------- ------------- ------------ ------
tournament_date winner_id loser_id winner_elo loser_elo winner_delta loser_delta other_columns
----------------- ------------ ---------- ------------- ------------ -------------- --------------- ---------------
2017-08-24 512 543 1128 1102 6 -6 ...
2017-08-24 100 517 1153 1062 0.4 -0.4 ...
2017-08-24 512 547 1128 1114 3.4 -3.4 ...
2017-08-24 543 517 1102 1062 4.8 -4.8 ...
2017-08-24 547 100 1114 1153 11.2 -11.2 ...
2017-08-24 517 512 1062 1128 9.9 -9.9 ...
2017-08-24 543 100 1102 1153 9.1 -9.1 ...
2017-08-24 517 547 1062 1114 9.1 -9.1 ...
2017-08-26 543 517 1103 1089 5.2 -5.2 ...
2017-08-26 547 551 1119 1165 8.8 -8.8 ...
2017-08-26 543 557 1103 1214 8.5 -8.5 ...
2017-08-26 551 517 1165 1089 1 -1 ...
2017-08-26 557 547 1089 1119 7.8 -7.8 ...
2017-08-26 551 543 1165 1103 3 -3 ...
赢家和输家在我的数据集中每天都会更新,但每场比赛都会有赢家和输家的增量变化列
我想找到每个玩家id的最新条目(在winner\u id或Losser\u id中),如果在winner\u id列中执行winner\u elo+winner\u delta,则查找最新elo,或者如果玩家的最新实例在Losser\u id列中,则计算Losser\u elo+Losser\u delta
大约有1000个独特的玩家id(500个独特的赢家id和508个输家id)。我试着按赢家id分组,按日期排序,得到最大值,类似地,按输家id分组,按日期排序,但我不知道如何比较它们,找出哪一个是最新的,然后进行所需的计算
我只能想到涉及for循环和if的解决方案,但我想肯定有更好的方法
编辑:这是一个网页抓取项目的一部分,我每天都会收到新的数据,所以我更喜欢适合新条目的解决方案。我会将数据框分成两部分来解决这个问题:从一个中删除失败的数据,从另一个中删除获胜的数据,并将列重命名为简单的“id”。“elo”和“delta”。只需将两个帧连接起来,按日期排序(最近的第一个)和
groupby
player ID
现在,对于每个玩家,只需略过最上面(最近)一行并应用它即可获得当前评级。刚刚编辑了原始帖子,我每天都会获得新数据,因此我不确定此解决方案是否最佳。添加的更新使这从设计角度来看是一个不同的问题,比堆栈溢出句柄更广泛。