python - 具有重复值的数据框中的位置
问题描述
我正在尝试实现一个游戏。为此,玩家将根据他们输入的值进行排名。游戏是动态的,他们输入的值在每一轮之后都会累加。然后比赛再次比较谁是
第一个,谁是第二个等等。我也想给他们现在的位置。但是,如果 2 个玩家输入相同的值,这并不容易:(下面列表中的每个位置都是一个玩家)
E.g.: entered values round 1 = [2, 4, 5, 4]
Rank [1, 2, 3, 2],
Position [1, 2, 4, 2]
最后,我想将当前位置返回给玩家,例如玩家1:当前位置是1/4 玩家3:当前位置是4/4
(请注意,排名和位置可以逐轮变化。这就是为什么像 current_position 这样的变量会很好的原因)
我已经为玩家和值创建了数据框,并且能够使用df['Rank'] = df['values'].rank(method='dense', ascending=False).astype(int).
我可以通过使用获得职位df[Position] = df['Rank'].rank(method='min').astype(int)
但是,这会向数据框添加一列。我需要将每个当前位置分配给相应的玩家。他们不应该看到其他玩家的位置。下面的例子是静态的。我认为如果静态解决方案有效,则很容易将其转移到动态解决方案
from scipy.stats import rankdata
import pandas as pd
from tabulate import tabulate
names = ['Tim', 'Tom', 'Sam', 'Kyle']
values = [2, 4, 5, 4]
df = pd.DataFrame({'Name': names,'Values': values})
columns = ["Name", "Values"]
df['Rank'] = df['Values'].rank(method='dense', ascending=False).astype(int)
解决方案
推荐阅读
- reactjs - 使用react-spring的共享模块中的无效挂钩调用
- mysql - 重构 MySQL 字段中的字符串
- django - 1 个表格行中有两个 forloop
- spring - Hibernite 忽略关系 onetomany 和加载集合中的惰性 fetchtype
- c++ - Line Erase Scene:二维空间中的圆与曲线相交问题
- visual-studio-code - 需要重新安装才能解决的频繁 JavaScript 错误
- wordpress - WooCommerce 获取多个订单/批量查询的订单项目数量
- reactjs - 如何重构分享主题信息的material-ui demo
- python - 值错误:无法将字符串转换为浮点数:'<' 使用字符嵌入创建 CNN-LSTM 时
- javascript - 如何获取数组的特定 JSON 元素?