我是python中的新手,我想我只能通过一列标识符生成组密钥。比如我有像
这样的输入文件inv_id GROUP
511031 Y
204501 Y
105756 N
134092 N
591688 N
235318 Y
642085 Y
134390 Y
211797 N
456165 N
556364 Y
169807 Y
406002 N
266034 N
313153 N
42474 Y
102622 Y
我想得到的预期输出是
inv_id GROUP GROUP_ID
511031 Y 001
204501 Y 001
105756 N 002
134092 N 003
591688 N 004
235318 Y 005
642085 Y 005
134390 Y 005
211797 N 006
456165 N 007
556364 Y 008
169807 Y 008
406002 N 009
266034 N 010
313153 N 011
42474 Y 012
102622 Y 012
如果“GROUP”列'Y'站在行中,因此它必须是相同的组,并且GROUP_ID必须写入,如果“GROUP”列是'N',则生成继续id。
我想获得一些示例python代码。
答案 0 :(得分:0)
这是使用布尔掩码和pd.Series.cumsum
的一种方法。
mask1 = df['GROUP'] == 'N'
mask2 = (df['GROUP'] == 'Y') & (df['GROUP'].shift() == 'N')
df['GROUP_ID'] = ((mask1 | mask2).cumsum() + 1).astype(str).str.zfill(3)
print(df)
inv_id GROUP GROUP_ID
0 511031 Y 001
1 204501 Y 001
2 105756 N 002
3 134092 N 003
4 591688 N 004
5 235318 Y 005
6 642085 Y 005
7 134390 Y 005
8 211797 N 006
9 456165 N 007
10 556364 Y 008
11 169807 Y 008
12 406002 N 009
13 266034 N 010
14 313153 N 011
15 42474 Y 012
16 102622 Y 012