Pandas (Python) : comment définir la valeur d'une colonne en se basant sur la valeur d'une autre ?

La librairie Pandas est très populaire avec le langage Python. Elle permet notamment d'utiliser des dataframes. Ces objets sont très utiles pour manipuler des données par exemple issues de requêtes que l'on a effectuées sur une base de données. Cette classe fournit un nombre important de méthodes. Il y a notamment plusieurs solutions pour définir la valeur d'une colonne en se basant sur une autre colonne du même dataframe.

Pour créer une nouvelle colonne dans votre dataframe, il existe plusieurs solutions. La fonction "assign()" permet notamment de créer une nouvelle colonne. Vous pouvez utiliser une colonne de votre dataframe en paramètre. Une simple assignation de la nouvelle colonne permet également de la créer.

df = pd.DataFrame({'c1': range(1, 3)})
>>> df
   c1
0  1
1  2
2  3

df = df.assign(c2 = df['c1'] * 2)
# ou
df['c2'] = dt['c1'] * 2
>>> df
   c1  c2
0  1  2
1  2  4
2  3  6

Si vous ne voulez modifier qu'une valeur précise, vous pouvez utiliser la méthode "loc()". Elle prend, en premier paramètre, la condition à remplir pour assigner la valeur, et en deuxième la colonne concernée. On peut ensuite assigner la valeur de son choix.

df.loc[df['c1'] == 2, 'c2'] = -1
>>> df
   c1  c2
0  1  2
1  2  -1
2  3  6

Si, dans votre programme, vous utilisez la librairie NumPy, cette dernière fournit des méthodes permettant également de changer la valeur d'une colonne suivant des conditions. La fonction "np.where()" prend en premier paramètre la condition à remplir. Le deuxième paramètre est la valeur à assigner lorsque la condition est remplie. Le troisième paramètre est la valeur assignée lorsque la condition n'a pas été remplie.

# Produit le même effet que l'instruction précédente
df['c2'] = np.where(df.c1 == 2,-1 , df.c2)

Python