Como grupo por várias colunas e criar uma nova coluna com base nas condições em Python?

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 factorizeproblema.

Uma forma seria juntar as colunas em uma única série e factorize, add1 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

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=276033&siteId=1
Recomendado
Clasificación