第二列中值的条件累积计数



我想根据列KEY中的值在列flag中填充数字。

  • 如果列KEY中的值保持不变,我希望每两行填充相同的数字,而不是使用cumcount()来填充增量数字
  • 如果KEY列中的值发生变化,则填充的数字也会发生变化

这是一个例子,df1就是我想要从df0中得到的。

df0 = pd.DataFrame({'KEY':['0','0','0','0','1','1','1','2','2','2','2','2','3','3','3','3','3','3','4','5','6']})
df1 = pd.DataFrame({'KEY':['0','0','0','0','1','1','1','2','2','2','2','2','3','3','3','3','3','3','4','5','6'],
'flag':['0','0','1','1','2','2','3','4','4','5','5','6','7','7','8','8','9','9','10','11','12']})

您想要获得cumcount并添加一个。然后使用%2来区分奇数行或偶数行。然后,取累计和,减去1,从零开始计数。

您可以使用:

df0['flag'] = ((df0.groupby('KEY').cumcount() + 1) % 2).cumsum() - 1
df0
Out[1]: 
KEY  flag
0    0      0
1    0      0
2    0      1
3    0      1
4    1      2
5    1      2
6    1      3
7    2      4
8    2      4
9    2      5
10   2      5
11   2      6
12   3      7
13   3      7
14   3      8
15   3      8
16   3      9
17   3      9
18   4     10
19   5     11
20   6     12

最新更新