2017-07-27 10 views
0

Ich habe eine Pandas Spalte mit String-Wert-Einträge, die ich dafür gesorgt haben, sind Strings überkann nicht mit Wörterbuch ersetzen Pandas Spalte

df[col].astype(str)

Und ich habe ein Wörterbuch aus einer Aufzählung dieser String-Werte geschaffen, nimmt die Form

{...'hello': 56, 'yello': 71,...}

ich mehrere Karte haben versucht,/Implementierungen ersetzen, aber ich kann die String-Werte mit ihrem Wörterbuch integer aktualisieren nicht bekommen.

df[col].replace(lambda s: inv_map.get(s) if s in inv_map else s)

Ist die jüngste ich ausprobiert habe. Ich bekomme keine Fehler oder Warnungen, es kartiert einfach nicht die Werte.

+0

Ich glaube, Sie suchen nach "apply" nicht ersetzen – Dark

Antwort

2

Ich glaube, Sie suchen apply dh

df = pd.DataFrame({"a":['hello','yello','bye','seeya']}) 
inv_map = {'hello': 56, 'yello': 71} 
col = 'a' 
df[col]=df[col].apply(lambda s: inv_map.get(s) if s in inv_map else s) 
 
0  56 
1  71 
2  bye 
3 seeya 
Name: a, dtype: object 

Hoffnung dieser hilft.

1

Sie können Werte ersetzen in einer Spalte durch die Werte in einem Wörterbuch mit map():

# sample data 
df 
    a 
0 asd 
1 er 
2 sdf 
3 qwe 

dic = {'asd': 21, 'er':90} 

df['dic_value'] = df.a.map(dic) 
df 
    a dic_value 
0 asd  21.0 
1 er  90.0 
2 sdf  NaN 
3 qwe  NaN 
+0

Ich glaube, mein Problem war, dass ich meine Spalte über df [col] im Gegensatz zu df.col ... – redress

+0

Es wird funktionieren, wie auch immer. Ich hätte auch 'df ['a']. Map (dic)' verwenden können. Sie müssen Anführungszeichen verwenden. –

+0

@redress Bitte akzeptieren Sie eine Antwort, wenn es Ihre Frage beantwortet hat. –

0
df = pd.DataFrame(['hello', 'yellow'], columns=['col_name']) 
inv_map = {'hello': 56, 'yellow': 71} 

df.replace(dict(col_name=inv_map)) 

    col_name 
0 56 
1 71 

# or just use 

df['col_name'].replace(inv_map) 

0 56 
1 71 
Name: col_name, dtype: int64 
+1

** Aus Review-Warteschlange: ** Darf ich Sie bitten, bitte etwas mehr Kontext um Ihre Antwort hinzuzufügen. Nur-Code-Antworten sind schwer zu verstehen. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie in Ihrem Beitrag weitere Informationen hinzufügen können. Siehe auch [Vollständig Code-basierte Antworten erläutern] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers). –

Verwandte Themen