Python 按单个整数对列进行排序
嗨,我基本上是在尝试将数据帧中的一列排序到排序位置 它看起来像这样,我正在尝试创建这样的东西。对于卖出相同数量水果的人来说,排名是一样的,这样当我按排名对他们进行排序时,就没有小数了。有人能给我建议吗Python 按单个整数对列进行排序,python,pandas,numpy,series,rank,Python,Pandas,Numpy,Series,Rank,嗨,我基本上是在尝试将数据帧中的一列排序到排序位置 它看起来像这样,我正在尝试创建这样的东西。对于卖出相同数量水果的人来说,排名是一样的,这样当我按排名对他们进行排序时,就没有小数了。有人能给我建议吗 person | number of fruits sold | ranking A | 5 | 2 B | 6 | 1 C | 2 |
person | number of fruits sold | ranking
A | 5 | 2
B | 6 | 1
C | 2 | 4
D | 5 | 2
E | 3 | 3
你可以用。这里有一些技巧:注意否定你的序列,指定sort=True
,为你想要的结果添加1
df['ranking'] = pd.factorize(-df['number of fruits sold'], sort=True)[0] + 1
结果:
person number of fruits sold ranking
0 A 5 2
1 B 6 1
2 C 2 4
3 D 5 2
4 E 3 3
使用:
可能是@RahulAgarwal的复制品,我认为这不是一个好的dup目标。这里没有涉及到
GroupBy
。相关:你能评论一下为什么需要int
转换吗?医生说排名是1比n。所以我相信rank
应该只输出整数。具体来说,组之间的秩总是增加1
@jpp-Hmmm,不知道为什么输出是浮点的。嗨,我得到了答案,但我能得到关于pd.factorize如何工作的解释吗?@cwerff,我能找到的最好解释是:将对象编码为枚举类型或分类变量。当重要的是识别不同的值时,此方法对于获取数组的数字表示非常有用。
df['ranking'] = df['number of fruits sold'].rank(method='dense', ascending=False).astype(int)
print (df)
person number of fruits sold ranking
0 A 5 2
1 B 6 1
2 C 2 4
3 D 5 2
4 E 3 3