[英]How to assign a group number to each ID (n=1,2,3.....)?
我想为每个组分配一个号码。 我试着做
df['group_n'] = df.groupby('ID').ngroup()
但它给了我一个错误消息:
SettingWithCopyWarning:试图在 DataFrame 的切片副本上设置值。 尝试使用.loc[row_indexer,col_indexer] = value 查看文档中的警告: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a -复制
如果我这样做,df['group_n'] = df.groupby('ID').ngroup().add(1)
我按降序得到_n(意思是C:3,B:2,A:1)有没有办法保留该顺序但group_n从0开始?
我目前的表:
ID date sender
C Jan20 3
C Feb20 7
C Mar20 12
C Apr20 15
B Mar20 1
B May20 10
B Jun20 15
...
A Jan21 10
A Feb21 12
A Mar21 20
A Apr21 5
所需表:
ID date sender group_n
C Jan20 3 1
C Feb20 7 1
C Mar20 12 1
C Apr20 15 1
B Mar20 1 2
B May20 10 2
B Jun20 15 2
A Jan21 10 3
A Feb21 12 3
A Mar21 20 3
A Apr21 5 3
先感谢您!
利用:
df['group_n'] = pd.factorize(df['ID'])[0] + 1
或者:
df['group_n'] = df.gruopby('ID').ngroup().add(1)
print(df)
ID date sender group_n
A Jan20 3 1
A Feb20 7 1
A Mar20 12 1
A Apr20 15 1
B Mar20 1 2
B May20 10 2
B Jun20 15 2
C Jan21 10 3
C Feb21 12 3
C Mar21 20 3
C Apr21 5 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.