Estoy un poco atascado, tengo una función de trabajo que se puede utilizar usando .apply() , sin embargo, parece que no puedo hacer que funcione con .assign() . Me gustaría que esto funcione con la asignación, para poder encadenar varias transformaciones juntas.
¿Alguien podría indicarme la dirección correcta para resolver el problema?
Esto funciona
data = {'heading': ['some men', 'some men', 'some women']} dataframe = pd.DataFrame(data=data) def add_gender(x): if re.search("(womens?)", x.heading, re.IGNORECASE): return 'women' elif re.search("(mens?)", x.heading, re.IGNORECASE): return 'men' else: return 'unisex' dataframe['g'] = dataframe.apply(lambda ref: add_gender(ref), axis=1)Esto no funciona
dataframe = dataframe.assign(gender = lambda ref: add_gender(ref))TypeError: cadena esperada u objeto similar a bytes
¿Es esto porque .assign() no proporciona un argumento de eje? Entonces, ¿quizás la función no está buscando lo correcto?
Después de leer la documentación, .assign indica que puede generar una nueva columna, por lo que asumí que el resultado sería el mismo que .apply(axis=1)