gpt4 book ai didi

python - Pandas 中的排名数字

转载 作者:行者123 更新时间:2023-11-28 22:18:46 26 4
gpt4 key购买 nike

我有这样的数字,我想把它们像'order'列一样排序,我尝试使用
(a.assign(rs=a.sort_values(['seq'], ascending=True).groupby(['qq'])'seq'].rank(method='first')))
但我得到的是“结果”列,这不是我想要的,所以有什么办法可以求助吗?

qq          seq   order result
2881017171 6730 1 1
2881017170 6731 1 1
644128000 6732 1 1
644128000 6733 2 2
2881017198 6734 1 1
644128000 6735 1 3
2881017198 6736 1 2
2881017192 6737 1 1
644128000 6738 1 4
2881017192 6739 1 2
2881017198 6740 1 3
285207386 6741 1 1
2881017198 6742 1 4
285207386 6743 1 2
2881017198 6744 1 5
2881017188 6745 1 1
2881017170 6746 1 2
2881017170 6747 2 3
2881017170 6748 3 4
644128000 6750 1 5
2881017198 6751 1 6
2881017192 6752 1 3
2881017192 6753 2 4

最佳答案

使用 groupby 通过比较移位的 Seriescumsum 创建的连续组:

df['result']=df.groupby(df.qq.ne(df.qq.shift()).cumsum()).seq.rank(method='first').astype(int)
print (df)
qq seq order result
0 2881017171 6730 1 1
1 2881017170 6731 1 1
2 644128000 6732 1 1
3 644128000 6733 2 2
4 2881017198 6734 1 1
5 644128000 6735 1 1
6 2881017198 6736 1 1
7 2881017192 6737 1 1
8 644128000 6738 1 1
9 2881017192 6739 1 1
10 2881017198 6740 1 1
11 285207386 6741 1 1
12 2881017198 6742 1 1
13 285207386 6743 1 1
14 2881017198 6744 1 1
15 2881017188 6745 1 1
16 2881017170 6746 1 1
17 2881017170 6747 2 2
18 2881017170 6748 3 3
19 644128000 6750 1 1
20 2881017198 6751 1 1
21 2881017192 6752 1 1
22 2881017192 6753 2 2

关于python - Pandas 中的排名数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50254865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com