我有一个熊猫数据框,其中包含有关体育赛事的数据。假设你看到一个冠军,一个失败者和一个匹配者。我正在试图找到上一个包含相同id的获胜者的最后一个索引。 预期的数据帧请参见:
d = {'winner':["A","B","C","A","A","C","B","D"], 'loser':["B","C","D","D","D","B","A","C"], 'id':[1,2,3,4,5,6,7,8], 'id_of_last_winner:' ["", 0, 1, 0, 3, 2, 5, 4]}
df = pd.DataFrame(d)
df
如果我遍历列,它的性能会非常差。我的代码应该是这样的: 最后一个获胜者的id:
等等。。。你知道吗
所以第一个直觉是我用for循环遍历loser列,然后将当前元素与loser和winner列中的其他元素进行比较。这很简单,但是执行起来很糟糕,因为每个迭代包含另外两个迭代。有没有更好的方法来加速这一进程?你知道吗
我满怀希望,因为我发现
df['id_of_last_winner'] = data.groupby('winner')['id'].shift()
但这只检查“失败者”列。有更好的主意吗?提前谢谢!你知道吗
由于需要
id
,您使它有点混乱,但是预期的输出使用index
。下面是一个使用id
的示例:显然,如果你有大量的玩家,它是不起作用的,但它应该适用于几百名玩家。这是输出
相关问题 更多 >
编程相关推荐