En Pandas, puedes encontrar situaciones en las que necesitas crear varias columnas nuevas basadas en una función personalizada aplicada a una columna existente. La tarea puede parecer sencilla, pero pueden surgir desafíos inesperados debido al tipo de retorno esperado de la función.
Al principio, puede intentar asignar la salida de una función directamente a un rango de índices en un DataFrame usando la sintaxis df.ix[: ,10:16] = df.textcol.map(extract_text_features). Sin embargo, este enfoque a menudo puede generar errores debido al tipo de retorno incompatible de la función.
Una posible solución es iterar sobre cada fila del DataFrame usando df.iterrows( ). Este método le permite aplicar la función a cada fila individualmente y capturar los resultados como una tupla. Sin embargo, este enfoque puede ser significativamente más lento que otras opciones.
Un enfoque más eficiente y flexible es usar la función zip() junto con map() para crear las nuevas columnas. La función zip() combina la salida de la función en una tupla, que luego se puede descomprimir en columnas individuales. Por ejemplo, el siguiente código demuestra cómo crear seis nuevas columnas usando el método zip():
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Las actualizaciones recientes de Pandas han introducido métodos más convenientes para aplicar funciones a columnas y crear nuevas columnas. Por ejemplo, el método df.apply() le permite especificar el formato de salida (DataFrame, Serie o lista) y manejar parámetros adicionales. Además, el método df.assign() le permite crear nuevas columnas directamente sin asignar explícitamente la salida. Estos métodos más nuevos brindan más flexibilidad y eficiencia al crear múltiples columnas nuevas basadas en una función.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3