pitón lamba - si la declaración con las condiciones de varias columnas

ben121:

Tengo una trama de datos:

df = pd.DataFrame({'col1': [1,2,3,4,5], 'col2':[1,2,3,4,5], 'col3':['a','b','c','d','e']})

Quiero crear una nueva columna que dice 'sí' si col1 y col2 son iguales a 1 de lo contrario sería decir que no.

He intentado usar una función lambda, pero sin éxito:

df['win'] = df[['col1', 'col2']].apply(lambda x: 'Yes' if (x['col1'] == 1) & (x['col2'] == 1) else 'No')

¿Hay una mejor manera de hacer esto? o una mejora en lo que he hecho por lo que funciona.

HS-nebulosa:

Sí, se puede utilizar np.where.

import pandas as pd
import numpy as np

df = pd.DataFrame({'col1': [1,2,3,4,5], 'col2':[1,2,3,4,5], 'col3':['a','b','c','d','e']})

condition = ((df['col1'] == 1) & (df['col2'] == 1))
# Return 'Yes' if the condition is True, and 'No' if False
df['win'] = np.where(condition, 'Yes', 'No')

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=364862&siteId=1
Recomendado
Clasificación