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!