aeapen:
Eu tenho uma data-estrutura como abaixo e eu quero criar uma nova coluna com base de uma coluna
Condição
Se duas ou várias linhas contêm o mesmo valor para a coluna A e coluna B e Coluna C é único nome de grupo exclusivo de linha, em seguida, deve ser atribuído
Entrada
A B C
Payment Mark 2
Payment Mark 3
Delayed Charles 2
Delayed Charles 4
Held Mark 3
Held Charles 4
Payment Mark 2
Payment Mark 3
Delayed Charles 4
Held Charles 4
saída esperado
A B C Cluster
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 2 C3
Delayed Charles 4 C4
Held Mark 3 C5
Held Charles 4 C6
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 4 C4
Held Charles 4 C6
Como isso pode ser feito em python
anky_91:
Este é um factorize
problema.
Uma forma seria juntar as colunas em uma única série e factorize
, add
1 e no início:add
C
df['Cluster'] = (pd.Series(df[['A','B','C']].astype(str).agg(''.join,1)
.factorize()[0]).add(1).astype(str).radd('C'))
print(df)
Outra forma seria semelhante, mas com groupby.ngroup
df['Cluster'] = (df.groupby(['A','B','C'],sort=False).ngroup()
.add(1).astype(str).radd('C'))
A B C Cluster
0 Payment Mark 2 C1
1 Payment Mark 3 C2
2 Delayed Charles 2 C3
3 Delayed Charles 4 C4
4 Held Mark 3 C5
5 Held Charles 4 C6
6 Payment Mark 2 C1
7 Payment Mark 3 C2
8 Delayed Charles 4 C4
9 Held Charles 4 C6