Maison >développement back-end >Tutoriel Python >Comment créer efficacement plusieurs colonnes dans un DataFrame Pandas ?

Comment créer efficacement plusieurs colonnes dans un DataFrame Pandas ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 04:24:291010parcourir

 How to Efficiently Create Multiple Columns in a Pandas DataFrame?

Créer efficacement plusieurs colonnes avec des pandas

Appliquer des fonctions à une colonne pandas pour générer plusieurs nouvelles colonnes peut être une tâche courante. Cependant, trouver la bonne approche pour garantir une affectation efficace et correcte peut être difficile.

Dans les versions antérieures de pandas (avant la version 0.16), l'itération avec df.iterrows() était souvent utilisée. Cependant, cela est nettement plus lent que les approches plus modernes. Avec des améliorations récentes, plusieurs options efficaces sont disponibles.

Une approche recommandée utilise la fonction zip() pour décompresser les sorties de la fonction appliquée et les affecter aux colonnes souhaitées. Cette méthode fonctionne en créant une série de tuples pour chaque ligne, chaque tuple contenant les valeurs de sortie souhaitées. Les tuples sont ensuite décompressés et affectés aux colonnes correspondantes.

<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = \
     zip(*df['num'].map(powers))</code>

La fonction apply() peut également être utilisée, ce qui offre une approche plus directe. La fonction appliquée doit renvoyer un DataFrame pandas avec le nombre souhaité de colonnes et des indices de ligne correspondant au DataFrame d'entrée.

<code class="python">df = df.apply(lambda x: powers(x['num']), axis=1, result_type='expand')</code>

La fonction assign(), introduite dans pandas v0.16, fournit un autre moyen pratique de créer de nouvelles colonnes. Il permet à l'utilisateur d'attribuer directement une nouvelle colonne au DataFrame à l'aide d'une expression.

<code class="python">df = df.assign(p1=df['num'].map(lambda x: x),
               p2=df['num'].map(lambda x: x**2))</code>

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