Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

506
Vistas
Teclas superpuestas en el diccionario cuando se usa el método .replace () en el marco de datos de pandas

Quiero reemplazar algunos valores en una columna de un marco de datos usando un diccionario que asigna los códigos antiguos a los códigos nuevos.

 di = dict( { "myVar": {11:0, 204:11} } ) mydata.replace( to_replace = di, inplace = True )

Pero algunos de los códigos nuevos y viejos se superponen. Cuando uso el método .replace del marco de datos, encuentro el error 'Replacement not allowed with overlapping keys and values'

Mi solución actual es reemplazar las teclas ofensivas manualmente y luego aplicar el diccionario a los casos restantes que no se superponen.

 mydata.loc[ mydata.myVar == 11, "myVar" ] = 0 di = dict( { "myVar": {204:11} } ) mydata.replace( to_replace = di, inplace = True )

¿Hay una forma más compacta de hacer esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Encontré una respuesta aquí que usa el método .map en una serie junto con un diccionario. Aquí hay un diccionario de grabación de ejemplo con claves y valores superpuestos.

 import pandas as pd >>> df = pd.DataFrame( [1,2,3,4,1], columns = ['Var'] ) >>> df Var 0 1 1 2 2 3 3 4 4 1 >>> dict = {1:2, 2:3, 3:1, 4:3} >>> df.Var.map( dict ) 0 2 1 3 2 1 3 3 4 2 Name: Var, dtype: int64

ACTUALIZAR:

Con map, cada valor de la serie original debe asignarse a un nuevo valor. Si el diccionario de asignación no contiene todos los valores de la columna original, los valores no asignados se asignan a NaN.

 >>> df = pd.DataFrame( [1,2,3,4,1], columns = ['Var'] ) >>> dict = {1:2, 2:3, 3:1} >>> df.Var.map( dict ) 0 2.0 1 3.0 2 1.0 3 NaN 4 2.0 Name: Var, dtype: float64
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda