繁体   English   中英

如何为每个 ID 分配一个组号(n=1,2,3.....)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM