Sto provando a fare qualcosa che dovrebbe essere davvero semplice nei panda, ma sembra tutt'altro. Sto cercando di aggiungere una colonna a un dataframe panda esistente che è un valore mappato basato su un'altra colonna (esistente). Ecco un piccolo banco di prova:Aggiunta di una nuova colonna panda con valore mappato da un dizionario
import pandas as pd
equiv = {7001:1, 8001:2, 9001:3}
df = pd.DataFrame({"A": [7001, 8001, 9001]})
df["B"] = equiv(df["A"])
print(df)
Speravo quanto segue comporterebbe:
A B
0 7001 1
1 8001 2
2 9001 3
Invece, ottengo un errore che mi diceva che equiv non è una funzione callable. Giusto, è un dizionario, ma anche se lo avvolgo in una funzione continuo a provare frustrazione. Così ho cercato di usare una funzione di mappa che sembra funzionare con altre operazioni, ma anche viene sconfitto con l'uso di un dizionario:
df["B"] = df["A"].map(lambda x:equiv[x])
In questo caso ottengo solo KeyError: 8001. Ho letto attraverso la documentazione e post precedenti, ma devono ancora imbattersi in tutto ciò che suggerisce come mescolare i dizionari con i datafram panda. Ogni suggerimento sarà molto apprezzato.
C'è un modo per farlo se i dati sono stringa invece di int? Questo mi dà solo NaNs per archi. – griffinc
Non importa, vedi le risposte qui http://stackoverflow.com/questions/20250771/remap-values-in-pandas-column-with-a-dict – griffinc