Maison > Article > développement back-end > Comment résoudre les erreurs dans la fonction Pandas \'apply\' lors de la gestion de plusieurs colonnes ?
Problème avec la fonction « appliquer » de Pandas pour gérer plusieurs colonnes ?
La bibliothèque Pandas fournit la fonction « appliquer » pour les transformations par ligne, y compris les opérations impliquant plusieurs colonnes. Cependant, les utilisateurs peuvent rencontrer des problèmes lorsqu'ils tentent d'accéder à des colonnes spécifiques au sein de la fonction.
Un de ces problèmes est illustré dans la question, où l'utilisateur tente d'appliquer une fonction qui prend deux valeurs scalaires (« a » et « c') comme entrée. Cependant, le message d'erreur indique que le nom « a » n'est pas reconnu.
La solution à ce problème réside dans l'utilisation de la syntaxe correcte pour référencer les colonnes dans la fonction « appliquer ». Au lieu d'utiliser le nom de la colonne nue (« a »), l'utilisateur doit le mettre entre crochets (« [ » et « ] »). Par exemple, pour accéder à la colonne « a », elle doit être écrite sous la forme « rangée['a'] ».
Code révisé :
<code class="python">df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)</code>
Considérations supplémentaires :
Lors de la définition d'une fonction personnalisée à utiliser avec « appliquer », il est important de s'assurer qu'elle fonctionne sur les types de données corrects. Dans l'exemple mis à jour fourni, la fonction « my_test » est définie pour calculer la différence cumulée entre la valeur d'entrée (« a ») et la colonne « a » pour toutes les lignes du DataFrame. Cela nécessite que « a » et « df'a » soient des valeurs numériques.
Syntaxe alternative :
Pour plus de commodité, Pandas propose une syntaxe alternative pour « appliquer 'lorsque vous travaillez sur plusieurs colonnes. En spécifiant les noms des colonnes comme arguments de la fonction, les valeurs des colonnes sont accessibles directement dans la fonction.
Exemple :
<code class="python">def my_test2(row): return row['a'] % row['c'] df['Value'] = df.apply(my_test2, axis=1)</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!