"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo agregar de manera eficiente varias columnas a un marco de datos de Pandas simultáneamente?

¿Cómo agregar de manera eficiente varias columnas a un marco de datos de Pandas simultáneamente?

Publicado el 2024-11-08
Navegar:840

How to Efficiently Add Multiple Columns to a Pandas DataFrame Simultaneously?

Agregar múltiples columnas a un DataFrame de Pandas simultáneamente

En la manipulación de datos de Pandas, agregar de manera eficiente múltiples columnas nuevas a un DataFrame puede ser una tarea que requiere una solución elegante. Si bien el enfoque intuitivo de utilizar la sintaxis de lista de columnas con un signo igual puede parecer sencillo, puede generar resultados inesperados.

El desafío

Como se ilustra en el ejemplo proporcionado, la siguiente sintaxis no puede crear las nuevas columnas según lo previsto:

df[['column_new_1', 'column_new_2', 'column_new_3']] = [np.nan, 'dogs', 3]

Esto se debe a que Pandas requiere que el lado derecho de la asignación sea un DataFrame cuando se usa la sintaxis de lista de columnas. Los valores escalares o las listas no son compatibles con este enfoque.

Soluciones

Varios métodos alternativos ofrecen soluciones viables para agregar varias columnas simultáneamente:

Método 1: Asignaciones individuales Usando Iterator Unpacking

df['column_new_1'], df['column_new_2'], df['column_new_3'] = np.nan, 'dogs', 3

Método 2: expandir una sola fila para que coincida con el índice

df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)

Método 3: combinar con un marco de datos temporal usando pd.concat

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)

Método 4: combinar con un marco de datos temporal usando .join

df = df.join(pd.DataFrame(
    [[np.nan, 'dogs', 3]], 
    index=df.index, 
    columns=['column_new_1', 'column_new_2', 'column_new_3']
))

Método 5: Usar diccionario para marco de datos temporal

df = df.join(pd.DataFrame(
    {
        'column_new_1': np.nan,
        'column_new_2': 'dogs',
        'column_new_3': 3
    }, index=df.index
))

Método 6: usar .assign() con argumentos de múltiples columnas

df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)

Método 7: crear columnas y luego asignar valores

new_cols = ['column_new_1', 'column_new_2', 'column_new_3']
new_vals = [np.nan, 'dogs', 3]
df = df.reindex(columns=df.columns.tolist()   new_cols)    # add empty cols
df[new_cols] = new_vals        # multi-column assignment works for existing cols

Método 8: múltiples asignaciones secuenciales

df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3

La elección del método más apropiado dependerá de factores como el tamaño del DataFrame, la cantidad de nuevas columnas que se agregarán y los requisitos de rendimiento de la tarea. No obstante, estas técnicas brindan a los usuarios de Pandas diversas opciones para agregar de manera eficiente múltiples columnas a sus DataFrames.

Último tutorial Más>

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