python - 以增量顺序在熊猫中编号并且不考虑列?
问题描述
输入数据框:
load1 = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
})
Rank
:按降序对 B 值进行排序,并按递增顺序从 1 开始排名
Rank_without_a_column
:将降序排列的第一列保留为 B 并按递增顺序从 1 开始排名
Exact_Rank
:给出正确的排名,如预期输出的确切排名所示
Exact_Rank_Without_a_column
:
预期输出:
A B Rank Rank_without_a_column Exact_Rank Exact_Rank_Without_a_column
0 a 5 1 Null 1 Null
1 b 5 2 1 1 1
2 c 5 3 2 1 1
3 d 4 4 3 2 2
4 e 4 5 4 2 2
5 f 4 6 5 2 2
解决方案
您需要一系列排名方法:
load1.sort_values('B',ascending=False,inplace=True)
load1['Rank'] = load1['B'].rank(ascending=False,method='first').astype(int)
load1.reset_index(drop=True,inplace=True)
load1.loc[1:,'Rank_without_a_column'] = load1.loc[1:,'B'].rank(ascending=False,method='first')
load1['Exact_Rank'] = load1['B'].rank(ascending=False,method='dense').astype(int)
load1.loc[1:,'Exact_Rank_Without_a_column'] = load1.loc[1:,'Exact_Rank'].rank(ascending=True,method='dense')
load1
A B Rank Rank_without_a_column Exact_Rank Exact_Rank_Without_a_column
0 b 5 1 NaN 1 NaN
1 d 5 2 1.0 1 1.0
2 e 5 3 2.0 1 1.0
3 a 4 4 3.0 2 2.0
4 c 4 5 4.0 2 2.0
5 f 4 6 5.0 2 2.0
推荐阅读
- excel - 如何在Excel工作表上提取多个列表框的值?
- javascript - 无法在 index.html 中加载反应组件
- r - 通过在 r 的组合中添加新字母来创建数据框
- magento2 - Magento 2 - 如何为每个页面添加自定义响应标头?
- javascript - 客户端的 XHTTPRequests
- javascript - 这个函数怎么能访问变量?
- mysql - 无法插入或更新具有 'yyyy-MM-dd hh:mm:ss' 格式的日期时间列
- javascript - 如何停止 onclick 事件?
- python - 使用列表作为模式
- python - 在不同容器上运行的烧瓶应用程序之间的连接