2015-04-22 16 views
21

vorrei aggiungere una colonna 'D' per un dataframe come questo:panda - aggiungi nuova colonna a dataframe dal dizionario

U,L 
111,en 
112,en 
112,es 
113,es 
113,ja 
113,zh 
114,es 

sulla base della seguente Dizionario:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'} 

in modo che il dataframe risultante appare come:

U,L,D 
111,en,en 
112,en,en 
112,es,en 
113,es,es 
113,ja,es 
113,zh,es 
114,es,es 

Finora ho provato il metodo pd.join() ma non posso figur edita come funziona con i dizionari.

risposta

42

chiamata map e passare il dict, questo eseguirà una ricerca e restituire il valore associato per quella chiave:

In [248]: 

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'} 
df['D'] = df['U'].map(d) 
df 
Out[248]: 
    U L D 
0 111 en en 
1 112 en en 
2 112 es en 
3 113 es es 
4 113 ja es 
5 113 zh es 
6 114 es es 
+2

Grazie! È una magia panda! –

+0

Quando uso "map" dice che ha bisogno di almeno due argomenti. Potresti dirmi quali altre informazioni dovrei fornire? Sto eseguendo python 2.7.1 – amc

+0

@amc Non posso commentare a meno che non invii il codice completo, posso decodificare il codice errato dall'errore – EdChum

6

ho ottenuto TypeError: 'dict' object is not callable di errore per la soluzione di EdChum quando provo ad usare index.map(). .. E non ho trovato un modo per ottenere l'indice come serie.

Quindi ho trovato un'altra soluzione a questo problema creando prima un oggetto serie dall'oggetto dict.

new_d = pd.Series(d) 

E quindi fare il pd.join con la colonna che ti piace. Questo può aiutare.

8

Ecco un modo più semplice che dovrebbe funzionare bene anche:

df["D"] = pd.Series(d)

Nota: Le chiavi dict devono essere nell'indice dataframe per questo.

Problemi correlati