Dans Pandas, vous pouvez rencontrer des situations dans lesquelles vous devez créer plusieurs nouvelles colonnes basées sur une fonction personnalisée appliquée à un colonne existante. La tâche peut sembler simple, mais des défis inattendus peuvent survenir en raison du type de retour attendu de la fonction.
Au départ, vous pouvez tenter d'attribuer la sortie de une fonction directement vers une plage d'index dans un DataFrame en utilisant la syntaxe df.ix[: ,10:16] = df.textcol.map(extract_text_features) . Cependant, cette approche peut souvent entraîner des erreurs en raison du type de retour incompatible de la fonction.
Une solution potentielle consiste à parcourir chaque ligne du DataFrame à l'aide de df.iterrows( ). Cette méthode vous permet d'appliquer la fonction à chaque ligne individuellement et de capturer les résultats sous forme de tuple. Cependant, cette approche peut être considérablement plus lente que les autres options.
Une approche plus efficace et plus flexible consiste à utiliser la fonction zip() en conjonction avec map() pour créer les nouvelles colonnes. La fonction zip() combine la sortie de la fonction dans un tuple, qui peut ensuite être décompressé en colonnes individuelles. Par exemple, le code suivant montre comment créer six nouvelles colonnes à l'aide de la méthode zip() :
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Les mises à jour récentes de Pandas ont introduit des méthodes plus pratiques pour appliquer des fonctions aux colonnes et créer de nouvelles colonnes. Par exemple, la méthode df.apply() vous permet de spécifier le format de sortie (DataFrame, Series ou liste) et de gérer des paramètres supplémentaires. De plus, la méthode df.assign() vous permet de créer de nouvelles colonnes directement sans attribuer explicitement la sortie. Ces méthodes plus récentes offrent plus de flexibilité et d'efficacité dans la création de plusieurs nouvelles colonnes basées sur une fonction.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3