Pandas Ottiene sequenza di numeri interi e 0 stringhe date

Oct 12 2020

In relazione a questa domanda ,

Dato quanto segue:

import pandas as pd
df = pd.DataFrame({'a':['K','1','1,2,3']})
df
       a
0      K
1      1
2  1,2,3

Vorrei convertire i valori nella colonna a in una sequenza corrispondente di 1 e 0 data questa mappa:

K 1 2 3 4 5
1 3 1 1 1 1

Se è presente un valore, viene inserito un 1 al posto di 0 (ma viene utilizzato un 3 anziché un 1 per il valore 1). Se il valore non è presente, il posto è tenuto da uno 0. Se non è presente alcun valore, la sequenza sarebbe una stringa di 6 0s.

Quindi "K" sarebbe: 100000

E "1,2,3" sarebbe: 031100

Risultato desiderato:

       a       b
0      K  100000
1      1  030000
2  1,2,3  031100

Entrambe le risposte attuali per questa domanda funzionano perfettamente per sostituire 0 con 1, ma devo solo aggiungere un livello per sostituire 0 con 3 per valori specifici.

Grazie in anticipo!

Risposte

1 IoaTzimas Oct 12 2020 at 13:15

Quanto segue dovrebbe funzionare:

d={'K':'1', '1':'3', '2':'1', '3':'1', '4':'1', '5':'1'}

def f(s):
    return ''.join([d[i] if i in s else '0' for i in d])

df['b']=df['a'].apply(f)

Produzione:

       a       b
0      K  100000
1      1  030000
2  1,2,3  031100