Dans Pandas, apply et transform peuvent être utilisés pour effectuer des opérations sur des données groupées. Cependant, il existe quelques différences clés entre les deux méthodes.
Input Type
- apply transmet l'intégralité du DataFrame pour chaque groupe en entrée de la fonction personnalisée.
- transform transmet chaque colonne du DataFrame pour chaque groupe individuellement en entrée de la fonction personnalisée.
Type de sortie
- apply peut renvoyer un scalaire, une série ou un DataFrame.
- transform doit renvoyer une séquence (par exemple, une série, un tableau ou une liste) de la même longueur que le groupe.
Transformation
- apply peut être utilisé pour effectuer des transformations sur un DataFrame, telles que l'agrégation de valeurs, le filtrage de lignes ou la modification de données.
- transform est principalement utilisé pour effectuer opérations par lignes au sein d'un groupe, telles que la mise à l'échelle des valeurs ou l'ajout de nouvelles colonnes.
Exemple
Considérez le DataFrame suivant :
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': randn(8), 'D': randn(8)})
Copier après la connexion
Pour soustraire la colonne C de la colonne D au sein de chaque groupe à l'aide de apply :
df.groupby('A').apply(lambda x: (x['C'] - x['D']))
Copier après la connexion
Pour soustraire la colonne C de la colonne D au sein de chaque groupe à l'aide de transform :
df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())
Copier après la connexion
Notez que le La fonction lambda passée à transform renvoie la moyenne de la différence entre C et D, ce qui donne une colonne transformée avec la même forme que le DataFrame d'origine.
Quand utiliser apply vs transform :
- Utilisez apply lorsque vous devez accéder à plusieurs colonnes au sein d'un groupe ou effectuer des opérations qui aboutissent à une forme de sortie différente (par exemple, agréger des valeurs ou filtrer des lignes).
- Utilisez transform lorsque vous devez effectuer des opérations par ligne au sein d'un groupe et souhaitez créer une nouvelle colonne ou variable avec la même forme que les données d'entrée.
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!