pandas 第二列中值的条件计数?
pandas conditional cumcount of values in second column?
我想根据第 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']})
您想获得累计数并加一。然后使用 %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
我想根据第 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']})
您想获得累计数并加一。然后使用 %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