Maison >développement back-end >Tutoriel Python >Comment puis-je appliquer une fonction personnalisée à plusieurs colonnes Pandas DataFrame pour créer une nouvelle colonne ?

Comment puis-je appliquer une fonction personnalisée à plusieurs colonnes Pandas DataFrame pour créer une nouvelle colonne ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 12:16:14823parcourir

How Can I Apply a Custom Function to Multiple Pandas DataFrame Columns to Create a New Column?

Application d'une fonction à plusieurs colonnes dans un DataFrame Pandas

Considérez la situation suivante dans laquelle vous disposez d'un DataFrame contenant plusieurs colonnes et une fonction personnalisée vous souhaitez appliquer à ces colonnes élément par élément pour créer un nouveau colonne.

Problème :

Supposons que vous ayez un DataFrame avec trois colonnes :

df = pd.DataFrame({'ID':['1','2','3'], 'col_1': [0,2,3], 'col_2':[1,4,5]})

Et une fonction :

def get_sublist(sta, end):
    return mylist[sta:end+1]

Votre objectif est d'appliquer get_sublist aux colonnes 'col_1' et 'col_2' de df pour obtenir une nouvelle colonne 'col_3' qui contient les sous-listes correspondantes de 'mylist'.

Solution :

Pour y parvenir, vous pouvez utiliser l'opération Pandas suivante :

df['col_3'] = df.apply(lambda x: get_sublist(x.col_1, x.col_2), axis=1)

Voici une répartition des code:

  • df.apply() : applique la fonction donnée par élément à chaque ligne du DataFrame.
  • lambda x : une fonction anonyme qui accepte un seul argument x, qui représente une ligne du DataFrame.
  • x : L'objet de ligne DataFrame qui contient les valeurs de 'col_1' et 'col_2' colonnes pour l'itération actuelle.
  • get_sublist(x.col_1, x.col_2) : appelle la fonction get_sublist avec les valeurs 'col_1' et 'col_2' de la ligne actuelle.
  • axis= 1 : Spécifie que la fonction doit être appliquée sur chaque ligne du DataFrame, ce qui entraîne un nouveau column.

En utilisant cette méthode, le DataFrame résultant aura la structure suivante :

  ID  col_1  col_2            col_3
0  1      0      1       ['a', 'b']
1  2      2      4  ['c', 'd', 'e']
2  3      3      5  ['d', 'e', 'f']

Notez que cette solution vous permet de passer n'importe quelle fonction personnalisée à la méthode apply() et appliquez-le à plusieurs colonnes simultanément. En accédant aux valeurs des colonnes via x.col_name, vous pouvez utiliser en toute sécurité les noms de colonnes même s'ils contiennent des espaces ou ont le même nom que les attributs DataFrame existants.

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