Creación condicional de pandas de una columna de marco de datos: basada en múltiples condiciones

saga

Tengo un df:

  col1 col2 col3
0    1    2    3
1    2    3    1
2    3    3    3
3    4    3    2

Quiero agregar una nueva columna basada en las siguientes condiciones:

 - if   col1 > col2 > col3   ----->  2
 - elif col1 > col2          ----->  1
 - elif col1 < col2 < col3   -----> -2
 - elif col1 < col2          -----> -1
 - else                      ----->  0

Y debería convertirse en esto:

  col1 col2 col3   new
0    1    2    3   -2
1    2    3    1   -1
2    3    3    3    0
3    4    3    2    2

Seguí el método de esta publicación por unutbu , con 1 mayor o menor que está bien. Pero en mi caso con más de 1 mayor o menor que , las condiciones devuelven un error:

conditions = [
       (df['col1'] > df['col2'] > df['col3']), 
       (df['col1'] > df['col2']),
       (df['col1'] < df['col2'] < df['col3']),
       (df['col1'] < df['col2'])]
choices = [2,1,-2,-1]
df['new'] = np.select(conditions, choices, default=0)


Traceback (most recent call last):

  File "<ipython-input-43-768a4c0ecf9f>", line 2, in <module>
    (df['col1'] > df['col2'] > df['col3']),

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__
    .format(self.__class__.__name__))

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

¿Cómo debería hacer esto?

YOBEN_S:

Cambia tu código a

conditions = [
       (df['col1'] > df['col2']) &  (df['col2'] > df['col3']), 
       (df['col1'] > df['col2']),
       (df['col1'] < df['col2']) & (df['col2'] < df['col3']),
       (df['col1'] < df['col2'])]
choices = [2,1,-2,-1]
df['new'] = np.select(conditions, choices, default=0)

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Creación condicional de pandas de una columna de marco de datos: basado en múltiples condiciones máx.

Pandas: manipulación de la columna basada en múltiples condiciones en el marco de datos

Creación condicional de una columna de marco de datos basada en valores numéricos

Cree una nueva columna basada en múltiples condiciones en el mismo marco de datos

Creación de una nueva columna basada en condiciones y valores de otras columnas en un marco de datos de pandas

Columna de marco de datos basada en condiciones de columnas

Columna de marco de datos basada en condiciones de columnas

Creación condicional de Pandas de una nueva columna de marco de datos

Creación condicional de Pandas de una columna de serie / marco de datos

Cree una columna basada en varias condiciones de columna de otro marco de datos

Python: cambie los valores en una columna de marco de datos de pandas en función de múltiples condiciones en Python

creó una nueva columna en un marco de datos de pandas basado en múltiples condiciones diferentes

columna de python pandas basada en múltiples condiciones if else

columna de marco de datos de pandas basada en filas y columnas múltiples

Crear columna en marco de datos usando múltiples condiciones

Llenar una columna de marco de datos basada en múltiples opciones condicionales

Fusionar una columna de múltiples marcos de datos a otro marco de datos en función de múltiples condiciones en Python

Fusionar una columna de múltiples marcos de datos a otro marco de datos en función de múltiples condiciones en Python

Codificación R: Cómo tomar una suma / media condicional con múltiples condiciones en un marco de datos

Crear una nueva columna basada en valores de fila de múltiples condiciones de subconjunto de datos

El marco de datos de Pandas cambia los valores en una columna según las condiciones

Creación de una nueva columna a partir de columnas en el marco de datos de pandas

cómo calcular una fórmula de proporción basada en algunas condiciones en el marco de datos de pandas

Subconjunto condicional de marco de datos con múltiples condiciones

¿Cómo agregar una columna condicional basada en listas a mi marco de datos pandas en Python de la manera más eficiente posible?

Marco de datos de Pandas agregando una columna basada en datos de otras 2 columnas

Creación de una nueva columna en el marco de datos de Pandas usando Regex

Cree una columna de marco de datos de pandas basada en cadenas de otras dos columnas

Cambiar el valor de una columna de marco de datos de pandas basada en duplicados