Intercambiar valores en las columnas y filas en condiciones específicas [duplicar]

Dec 03 2020

Tengo un siguiente marco de datos de pandas:

y quiero comprobar si el valor de la columna 'A start'es negativo. Si es negativo que los valores de intercambio en la columna 'start'y 'end'y en las columnas 'A start'y 'A end'en la fila donde el

'A start'tiene un valor negativo. Entonces el resultado debería ser:

Traté de resolverlo con wherepero no funcionó.

Estoy usando Python 3.8.

Muchas gracias por su ayuda.

Respuestas

AasthaSethia Dec 03 2020 at 20:37

Oye, mira esta publicación, es similar a tu pregunta, ¡podría ayudar! Si no, avíseme puede buscar otras opciones.

¿Cuál es la sintaxis correcta para intercambiar valores de columna para filas seleccionadas en un marco de datos de pandas usando solo una línea?

kirtipurohit Dec 03 2020 at 20:42

Aquí está el método más simple usando where


df = pd.DataFrame()
df['start']   = [1,5,7,2]
df['end']     = [4,6,8,9,]
df['A start'] = [234, -475, -765, 113]
df['A end']   = [-654, 312, 987, -553]


df[['A start','A end']] = df[['A end','A start']].where(df['A start'] < 0 , df[['A start','A end']].values)
df

Producción: