Exemple de comment appliquer une fonction sur une ligne d'une dataframe avec pandas en python:
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 ligne donnée
Essayons alors de modifier les éléments de la ligne 1 par exemple:
>>> df.iloc[1]
a 5
b 6
c 7
d 8
Si on veut ajouter 10 à tous les éléments de la ligne 1 on peut simplement faire comme ceci:
>>> df.iloc[1] = df.iloc[1] + 10
>>> df
a b c d
0 1 2 3 4
1 15 16 17 18
2 9 10 11 12
Autre exemple en multipliant tous les éléments de la ligne 1 par 2:
>>> df.iloc[1] = df.iloc[1] * 2.0
>>> df
a b c d
0 1.0 2.0 3.0 4.0
1 30.0 32.0 34.0 36.0
2 9.0 10.0 11.0 12.0
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.iloc[1].apply(np.sqrt)
a 5.477226
b 5.656854
c 5.830952
d 6.000000
Name: 1, dtype: float64
ou encore comme ceci
>>> df.apply(lambda x: np.sqrt(x) if x.name == 1 else x, axis=1)
a b c d
0 1.000000 2.000000 3.000000 4.0
1 5.477226 5.656854 5.830952 6.0
2 9.000000 10.000000 11.000000 12.0
Exemple en définissant sa propre fonction:
>>> def myfunc(x):
... return x**2 + 2*x + 3
...
>>>
>>> df.iloc[1].apply(myfunc)
a 963.0
b 1091.0
c 1227.0
d 1371.0
Références
Liens | Site |
---|---|
Apply a function to a single column in Dataframe | thispointer.com |
pandas.DataFrame.apply | pandas doc |