python - Los pandas que reemplazan elementos no funcionan
numpy replace (3)
Cuando usa
df.replace()
crea un nuevo objeto temporal, pero no modifica el suyo.
Puede usar una de las dos líneas siguientes para modificar df:
df = df.replace(''white'', np.nan)
df.replace(''white'', np.nan, inplace = True)
He buscado este problema y la mayoría de las preguntas son para reemplazos más complejos. Sin embargo, en mi caso tengo un marco de datos muy simple como prueba ficticia.
El objetivo es reemplazar una cadena en cualquier parte del marco de datos con un nan, sin embargo, esto no parece funcionar (es decir, no reemplaza; no hay errores de ningún tipo). He intentado reemplazar con otra cadena y tampoco funciona. P.ej
d = {''color'' : pd.Series([''white'', ''blue'', ''orange'']),
''second_color'': pd.Series([''white'', ''black'', ''blue'']),
''value'' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace(''white'', np.nan)
La salida sigue siendo:
color second_color value
0 white white 1
1 blue black 2
2 orange blue 3
Dado que este es el principal resultado de Google al buscar "Reemplazar pandas no funciona", me gustaría mencionar también que:
replace realiza búsquedas de reemplazo completo, a menos que active el interruptor regex. Use regex = True, y también debería realizar reemplazos parciales.
Me llevó 30 minutos descubrirlo, así que espero haber salvado a la siguiente persona 30 minutos.
Necesitas asignar de nuevo
df = df.replace(''white'', np.nan)
o pasar param
inplace=True
:
In [50]:
d = {''color'' : pd.Series([''white'', ''blue'', ''orange'']),
''second_color'': pd.Series([''white'', ''black'', ''blue'']),
''value'' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace(''white'', np.nan, inplace=True)
df
Out[50]:
color second_color value
0 NaN NaN 1.0
1 blue black 2.0
2 orange blue 3.0
La mayoría de las operaciones de pandas devuelven una copia y la mayoría tienen
inplace
que generalmente se
inplace
como
False