python pandas 如何为空行设置唯一值?
python pandas how to set unique value for null row?
我有一个这样的数据框:
sku new-sku
0 FAT-001 FAT-001
1 FAT-001 FAT-001-01
2 FAT-001 FAT-001-02
3 FAT-002 FAT-002
4 FAT-002 FAT-002-01
5
6
7 FAT-003 FAT-003
8
9
这是我的代码:
groups = df.groupby('sku').cumcount()
df['new'] = df['sku'] + ('-' + groups.astype('string').str.zfill(2)).mask(groups.eq(0), '')
我的预期结果如下所示:
sku new-sku
0 FAT-001 FAT-001
1 FAT-001 FAT-001-01
2 FAT-001 FAT-001-02
3 FAT-002 FAT-002
4 FAT-002 FAT-002-01
5 FAT-null-01
6 FAT-null-02
7 FAT-003 FAT-003
8 FAT-null-03
9 FAT-null-04
它会为每个新的空行增加 +1。
构造函数:
{'sku': {0: 'FAT-001', 1: ' ', 2: ' ', 3: 'FAT-002', 4: 'FAT-002', 5: ' ', 6: ' ', 7: 'FAT-003', 8: 'FAT-003', 9: 'FAT-004'}}
在 的基础上,我们可以在使用 groupby.cumcount
为白色 space 行创建组时添加 mask
并进行相应调整:
groups = df.groupby('sku').cumcount()
groups = groups.mask(df['sku'].eq(' '), groups+1)
df['new-sku'] = df['sku'].replace(' ', 'FAT-null') + ('-' + groups.astype('string').str.zfill(2)).mask(groups.eq(0), '')
输出:
ID sku new-sku
0 1 FAT-001 FAT-001
1 2 FAT-null-01
2 3 FAT-null-02
3 4 FAT-002 FAT-002
4 5 FAT-002 FAT-002-01
5 6 FAT-null-03
6 7 FAT-null-04
7 8 FAT-003 FAT-003
8 9 FAT-003 FAT-003-01
9 10 FAT-004 FAT-004
我有一个这样的数据框:
sku new-sku
0 FAT-001 FAT-001
1 FAT-001 FAT-001-01
2 FAT-001 FAT-001-02
3 FAT-002 FAT-002
4 FAT-002 FAT-002-01
5
6
7 FAT-003 FAT-003
8
9
这是我的代码:
groups = df.groupby('sku').cumcount()
df['new'] = df['sku'] + ('-' + groups.astype('string').str.zfill(2)).mask(groups.eq(0), '')
我的预期结果如下所示:
sku new-sku
0 FAT-001 FAT-001
1 FAT-001 FAT-001-01
2 FAT-001 FAT-001-02
3 FAT-002 FAT-002
4 FAT-002 FAT-002-01
5 FAT-null-01
6 FAT-null-02
7 FAT-003 FAT-003
8 FAT-null-03
9 FAT-null-04
它会为每个新的空行增加 +1。
构造函数:
{'sku': {0: 'FAT-001', 1: ' ', 2: ' ', 3: 'FAT-002', 4: 'FAT-002', 5: ' ', 6: ' ', 7: 'FAT-003', 8: 'FAT-003', 9: 'FAT-004'}}
在 groupby.cumcount
为白色 space 行创建组时添加 mask
并进行相应调整:
groups = df.groupby('sku').cumcount()
groups = groups.mask(df['sku'].eq(' '), groups+1)
df['new-sku'] = df['sku'].replace(' ', 'FAT-null') + ('-' + groups.astype('string').str.zfill(2)).mask(groups.eq(0), '')
输出:
ID sku new-sku
0 1 FAT-001 FAT-001
1 2 FAT-null-01
2 3 FAT-null-02
3 4 FAT-002 FAT-002
4 5 FAT-002 FAT-002-01
5 6 FAT-null-03
6 7 FAT-null-04
7 8 FAT-003 FAT-003
8 9 FAT-003 FAT-003-01
9 10 FAT-004 FAT-004