Maison >développement back-end >Tutoriel Python >Comment ajouter efficacement plusieurs colonnes à un DataFrame Pandas ?

Comment ajouter efficacement plusieurs colonnes à un DataFrame Pandas ?

DDD
DDDoriginal
2024-10-25 09:54:02482parcourir

How to Efficiently Add Multiple Columns to a Pandas DataFrame?

Attribuer simultanément plusieurs colonnes au DataFrame Pandas

Dans le contexte de l'utilisation de dataframes dans Pandas, la question se pose de savoir comment ajouter efficacement plusieurs colonnes en une seule affectation.

Tentative initiale et ses inconvénients

De nombreux utilisateurs tentent naturellement d'utiliser la syntaxe suivante pour accomplir cette tâche :

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

Cependant , cette approche échoue car Pandas exige que le côté droit soit un DataFrame lors de la création de nouvelles colonnes avec la syntaxe de liste de colonnes.

Approches alternatives

Plusieurs solutions viables exister pour atteindre le résultat souhaité. Voici quelques-unes des approches recommandées :

1. Affectations sur une seule colonne avec déballage d'itérateur

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

2. Extension DataFrame avec Pandas.DataFrame()

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

3. Concaténation avec Pandas.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
)

4. Rejoignez Pandas.join

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

5. Expansion du dictionnaire avec Pandas.join

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

6. Arguments à plusieurs colonnes avec .assign()

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

7. Création et attribution de colonnes

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

8. Missions séparées

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

Le choix de l'approche dépend des exigences spécifiques de l'utilisateur. Pour des raisons de simplicité et d'efficacité, des missions distinctes peuvent souvent être la solution privilégiée. Cependant, si l'on souhaite ajouter plusieurs colonnes avec le même type ou la même valeur, les autres approches offrent flexibilité et concision.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn