Hay un poco de ambigüedad en su pregunta. Hay al menos tres interpretaciones:
- las claves se
di
refieren a valores de índice
- las claves se
di
refieren a df['col1']
valores
- las claves se
di
refieren 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 di
están destinadas a hacer referencia a valores de índice, entonces podría usar el update
mé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 update
está haciendo. Observe cómo las claves di
se 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 di
refieren 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, di
se modificaron las claves para que coincidan con los valores de df['col1']
.
Caso 3:
si las claves se di
refieren 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 di
son 0
y 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 is
no puedo comparar los tipos 'ndarray (dtype = object)' y 'tuple' '' '