给定一个DataFrame
,我想要一列id1
中的值的组号,在第二列id2
的每个组中
我试图通过{
下面是一个例子df
:
id1 id2
0 1123 123
1 1123 123
2 1124 123
3 1124 123
4 1125 123
5 1125 123
6 1125 123
7 1126 122
8 1126 122
9 1127 122
使用ngroup()
:
df['row_id'] = df.groupby(['id1','id2']).ngroup() + 1
但它给了我这个输出:
row_id = [1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
我希望最后3个值在1
处重新开始,因为它们用于新的id2
(122);因此,我期望的输出是:
row_id = [1, 1, 2, 2, 3, 3, 3, 1, 1, 2]
# ^ restart (id2 switches from 123 to 122)
由于您似乎希望在每个
id2
组中有一组数量的id1
,因此您需要做的是两个.groupby()
操作(每个组中有一个groupby):给出:
注意:这将处理
df
未排序的情况:以及:
给出:
相关问题 更多 >
编程相关推荐