Exemple de comment appliquer une fonction à une colonne d'une dataframe avec pandas:
Créer une simple dataframe avec pandas
Commençons par créer une simple dataframe df:
>>> import pandas as pd
>>> import numpy as np
>>> data = np.arange(1,13)
>>> data = data.reshape(3,4)
>>> df = pd.DataFrame(data=data,columns=['a','b','c','d'])
>>> df
a b c d
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
Appliquer une fonction sur une colonne donnée
Essayons alors de modifier les éléments de la colonne b par exemple:
>>> df['b']
0 2
1 6
2 10
Si on veut ajouter 10 à tous les éléments de la colonne b on peut simplement faire comme ceci:
>>> df['b'] = df['b'] + 10
>>> df
a b c d
0 1 12 3 4
1 5 16 7 8
2 9 20 11 12
Autre exemple en multipliant tous les éléments de la colonne b par 2:
>>> df['b'] = df['b']*2
>>> df
a b c d
0 1 24 3 4
1 5 32 7 8
2 9 40 11 12
Pour appliquer une fonction plus compliquée comme une racine carrée par exemple, une solution est de passer par la fonction pandas apply():
>>> df['b'].apply(np.sqrt)
0 4.898979
1 5.656854
2 6.324555
Name: b, dtype: float64
ou encore comme ceci
>>> df.apply(lambda x: np.sqrt(x) if x.name == 'b' else x)
a b c d
0 1 4.898979 3 4
1 5 5.656854 7 8
2 9 6.324555 11 12
Exemple en définissant sa propre fonction:
>>> def myfunc(x):
... return x**2 + 2*x + 3
...
>>>
>>> df['b'].apply(myfunc)
0 627
1 1091
2 1683
Références
Liens | Site |
---|---|
Apply a function to a single column in Dataframe | thispointer.com |
pandas.DataFrame.apply | pandas doc |