python - 如何使用具有相同值计数的 Python rank()?
问题描述
我正在处理python中的数据框。
这就是我想要做的。
1. same value gets same rank
2. the next rank should be added as much as the same rank counts
这就是我的意图
- 价格等级
- 5300 1
- 5300 1
- 5300 1
- 5200 4 < 上一个排名:1 + 5300 的计数:3
- 5200 4 < 相同值,相同等级
- 5100 6 < 上一级:4 + 5200 的计数:2
首先,我尝试使用 rank(method = "dense") 函数。但它并没有像我预期的那样工作。
df_sales["rank"] = df_sales["price"].rank(ascending = False, method = "dense")
先感谢您。
解决方案
您需要使用method='min'
和ascending=False
:
df = pd.DataFrame({'x':[5300,5300,5300,5200,5200, 5100]})
df['r'] = df['x'].rank(method='min', ascending=False)
方法:{'average', 'min', 'max', 'first', 'dense'}
average: average rank of group min: lowest rank in group max: highest rank in group first: ranks assigned in order they appear in the array dense: like ‘min’, but rank always increases by 1 between groups
请注意,dense
特别是在组内将排名增加 1。你想要这个min
选项。
推荐阅读
- javascript - 时刻时区未返回预期结果
- arrays - 难以使用 C 从文件中的多维数组中提取数组元素
- shell - 如果找到某些文本,则打印两个图案之间的线条并忽略线条
- objective-c - CNContactPickerViewController 联系人列表偏移问题
- python - 运算符如何处理python中的不同类型
- python - 如何根据Python中文件名的位置解压缩和重命名文件
- math - 复概率或机会图形
- javascript - contentEditable 文本被反转
- javascript - 如何让用户在Javascript中只输入他的名字作为字符串?
- javascript - 使用 NestJS 编写 CLI