web-dev-qa-db-fra.com

Appliquer la fonction à chaque cellule dans DataFrame

J'ai un dataframe qui peut ressembler à ceci:

A        B        C
foo      bar      foo bar
bar foo  foo      bar

Je veux parcourir chaque élément de chaque ligne (ou chaque élément de chaque colonne) et appliquer la fonction suivante pour obtenir le DF suivant:

def foo_bar(x):
    return x.replace('foo', 'wow')

A        B        C
wow      bar      wow bar
bar wow  wow      bar

Existe-t-il une simple ligne qui puisse appliquer une fonction à chaque cellule?

Il s'agit d'un exemple simpliste. Il peut donc être plus simple d'exécuter cet exemple spécifique que d'appliquer une fonction, mais ce que je demande en réalité, c'est comment appliquer une fonction dans chaque cellule d'un cadre de données.

47
eljusticiero67

Vous pouvez utiliser applymap() qui est concis pour votre cas.

df.applymap(foo_bar)

#     A       B       C
#0  wow     bar wow bar
#1  bar wow wow     bar

Une autre option consiste à vectoriser votre fonction puis à utiliser la méthode apply :

import numpy as np
df.apply(np.vectorize(foo_bar))
#     A       B       C
#0  wow     bar wow bar
#1  bar wow wow     bar
75
Psidom