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

标签 python pandas

我想为每个组分配一个编号。我尝试做

df['group_n'] = df.groupby('ID').ngroup()

但它给了我一个错误消息:

设置复制警告: 尝试在 DataFrame 的切片副本上设置一个值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替 请参阅文档中的警告:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

如果我这样做,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.groupby('ID', sort=False).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

关于python - 如何为每个ID分配一个组号(n=1,2,3.....)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70827209/

相关文章:

Pythonic 累积图

python - django.db.utils.DatabaseError : ORA-12154: TNS:could not resolve the connect identifier specified 错误

python - 如何对 pandas DataFrame 中的内部列表进行排序?

python-2.7 - 使用 read_csv 时的额外逗号导致数据框中的 "s 过多

python - 如何在Python中按另一列的条件过滤时取一列的平均值

python - 如何通过遍历具有相同键多个值的列表来创建字典?

python - 如何编写 setup.py 以包含 Git 存储库作为依赖项

python - 如何使用pandas.Series.dt.strftime可以做每小时映射?

python - 执行在 python 中创建的应用程序时出现致命 Python 错误

Python Pandas 追加 Dataframe 多进程池 for 循环以存在 Data-frame