Ihre Frage ist etwas mehrdeutig. Es gibt mindestens drei zwei Interpretationen:
- Die Tasten in
dibeziehen sich auf Indexwerte
- Die Tasten
dibeziehen sich auf df['col1']Werte
- Die Tasten in
dibeziehen sich auf Indexpositionen (nicht die Frage des OP, sondern zum Spaß.).
Nachfolgend finden Sie eine Lösung für jeden Fall.
Fall 1:
Wenn sich die Schlüssel von diauf Indexwerte beziehen sollen, können Sie die folgende updateMethode verwenden:
df['col1'].update(pd.Series(di))
Zum Beispiel,
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
# col1 col2
# 1 w a
# 2 10 30
# 0 20 NaN
di = {0: "A", 2: "B"}
# The value at the 0-index is mapped to 'A', the value at the 2-index is mapped to 'B'
df['col1'].update(pd.Series(di))
print(df)
ergibt
col1 col2
1 w a
2 B 30
0 A NaN
Ich habe die Werte aus Ihrem ursprünglichen Beitrag geändert, damit klarer wird, was zu updatetun ist. Beachten Sie, wie die Schlüssel in dimit Indexwerten verknüpft sind. Die Reihenfolge der Indexwerte - , die der Index Standorte - spielt keine Rolle.
Fall 2:
Wenn sich die Schlüssel in diauf df['col1']Werte beziehen, zeigen @DanAllan und @DSM, wie dies erreicht werden kann mit replace:
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
print(df)
# col1 col2
# 1 w a
# 2 10 30
# 0 20 NaN
di = {10: "A", 20: "B"}
# The values 10 and 20 are replaced by 'A' and 'B'
df['col1'].replace(di, inplace=True)
print(df)
ergibt
col1 col2
1 w a
2 A 30
0 B NaN
Beachten Sie, wie in diesem Fall die Schlüssel digeändert wurden, um den Werten in zu entsprechen df['col1'].
Fall 3:
Wenn sich die Schlüssel in diauf Indexpositionen beziehen, können Sie sie verwenden
df['col1'].put(di.keys(), di.values())
schon seit
df = pd.DataFrame({'col1':['w', 10, 20],
'col2': ['a', 30, np.nan]},
index=[1,2,0])
di = {0: "A", 2: "B"}
# The values at the 0 and 2 index locations are replaced by 'A' and 'B'
df['col1'].put(di.keys(), di.values())
print(df)
ergibt
col1 col2
1 A a
2 10 30
0 B NaN
Hier ist die erste und dritte Reihe wurde geändert, da die in Tasten disind 0und 2, die mit Python 0-basierter Indizierung an die ersten und dritte Stelle verweisen.
col```` is tuple. The error info isdie Typen 'ndarray (dtype = object)' und 'tuple'``` nicht verglichen werden können