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')