Pandas Ottiene sequenza di numeri interi e 0 stringhe date
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
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