Hay un poco de ambigüedad en su pregunta. Hay al menos tres interpretaciones:
- las claves se
direfieren a valores de índice
- las claves se
direfieren a df['col1']valores
- las claves se
direfieren a ubicaciones de índice (no es la pregunta del OP, pero son divertidas).
A continuación hay una solución para cada caso.
Caso 1:
Si las claves de diestán destinadas a hacer referencia a valores de índice, entonces podría usar el updatemétodo:
df['col1'].update(pd.Series(di))
Por ejemplo,
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)
rendimientos
col1 col2
1 w a
2 B 30
0 A NaN
He modificado los valores de tu publicación original para que quede más claro lo que updateestá haciendo. Observe cómo las claves dise asocian con valores de índice. El orden de los valores del índice, es decir, las ubicaciones del índice , no importa.
Caso 2:
Si las claves se direfieren a df['col1']valores, entonces @DanAllan y @DSM muestran cómo lograr esto con 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)
rendimientos
col1 col2
1 w a
2 A 30
0 B NaN
Tenga en cuenta cómo, en este caso, dise modificaron las claves para que coincidan con los valores de df['col1'].
Caso 3:
si las claves se direfieren a ubicaciones de índice, entonces podría usar
df['col1'].put(di.keys(), di.values())
ya que
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)
rendimientos
col1 col2
1 A a
2 10 30
0 B NaN
Aquí, la primera y la tercera fila fueron alteradas, porque las claves en dison 0y 2, que con la indexación basada en 0 de Python se refieren a las ubicaciones primera y tercera.
col```` is tuple. The error info isno puedo comparar los tipos 'ndarray (dtype = object)' y 'tuple' '' '