提问人:maggTech 提问时间:3/24/2022 最后编辑:maggTech 更新时间:3/24/2022 访问量:535
Python:如何向组添加序列号?
Python: How can I add sequence numbers to groups?
问:
如何将序列号添加到数据帧中的分组数字?这样:
序列号
我试过了,但没有用df.groupby().cumcount()
例如:
import pandas as pd
tmp = pd.DataFrame({'group Nr':[50,50,50,53,53,53,53,56,56,59,59,59]})
tmp['sequential Nr'] = tmp.groupby('group Nr').cumcount()
tmp.sort_values('group Nr')
print(tmp)
会给我:
group Nr sequential Nr
0 50 0
1 50 1
2 50 2
3 53 0
4 53 1
5 53 2
6 53 3
7 56 0
8 56 1
9 59 0
10 59 1
11 59 2
正如你所看到的,这并不是我想要的。
答:
0赞
hillard28
3/24/2022
#1
假设您只想创建一个序列号列,则可以使用 ngroup:
df = pd.DataFrame({'group Nr':[50,50,50,53,53,53,53,56,56,59,59,59]})
df["sequence Nr"] = df.groupby("group Nr").ngroup() + 1
ngroup 对每个组进行编号,从 0 开始,因此您需要添加 1。
0赞
gpxlcj
3/24/2022
#2
您可以通过以下代码达到目标。
import pandas as pd
tmp = pd.DataFrame({'group Nr':[50,50,50,53,53,53,53,56,56,59,59,59]})
tmp = tmp.sort_values('group Nr')
s_df = tmp.groupby('group Nr').head(1)
s_df['sequential Nr'] = range(1, len(s_df)+1)
tmp = tmp.merge(s_df, on='group Nr', how='left')
print(tmp)
评论
sequence number
group number
[0,1,2]
[0,1,2,3]