Comment décaler une colonne dans Pandas : avec des exemples
Vous pouvez utiliser la fonction shift() pour décaler les valeurs d’une colonne vers le haut ou vers le bas dans un DataFrame pandas :
#shift values down by 1 df['column1'] = df['column1'].shift(1) #shift values up by 1 df['column1'] = df['column1'].shift(-1)
Les exemples suivants montrent comment utiliser cette fonction en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'product': ['A', 'B', 'C', 'D', 'E', 'F'], 'sales': [4, 7, 8, 12, 15, 19]}) #view DataFrame df product sales 0 A 4 1 B 7 2 C 8 3 D 12 4 E 15 5 F 19
Exemple 1 : déplacer une colonne vers le haut ou vers le bas
Le code suivant montre comment décaler toutes les valeurs de la colonne « produit » vers le bas de 1 :
#shift all 'product' values down by 1
df['product'] = df['product'].shift(1)
#view updated DataFrame
df
product sales
0 NaN 4
1 A 7
2 B 8
3 C 12
4 D 15
5 E 19
Notez que chaque valeur de la colonne « produit » a été décalée de 1 et que la première valeur de la colonne a été remplacée par NaN.
Notez également que la dernière valeur de la colonne produit (« F ») a été entièrement supprimée du DataFrame.
Pour conserver la valeur « F » dans le DataFrame, nous devons d’abord ajouter une ligne vide au bas du DataFrame, puis effectuer le décalage :
import numpy as np
#add empty row to bottom of DataFrame
df.loc[len(df.index)] = [np.nan, np.nan]
#shift all 'product' values down by 1
df['product'] = df['product'].shift(1)
#view updated DataFrame
df
product sales
0 NaN 4.0
1 A 7.0
2 B 8.0
3 C 12.0
4 D 15.0
5 E 19.0
6 F NaN
Notez que la valeur « F » est conservée comme dernière valeur dans la colonne « produit ».
Exemple 2 : déplacer plusieurs colonnes vers le haut ou vers le bas
Le code suivant montre comment décaler toutes les valeurs des colonnes « produit » et « ventes » vers le haut de 2 :
#shift all 'product' and 'sales' values up by 2
df[['product', 'sales']] = df[['product', 'sales']].shift(-2)
#view updated DataFrame
df
product sales
0 C 8.0
1 D 12.0
2 E 15.0
3 F 19.0
4 NaN NaN
5 NaN NaN
Notez que chaque valeur des colonnes « produit » et « ventes » a été décalée de 2 vers le haut et que les deux valeurs inférieures de chaque colonne ont été remplacées par NaN.
Remarque : Vous pouvez trouver la documentation complète de la fonction shift() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment ajouter des lignes à un DataFrame Pandas
Comment ajouter une colonne à un DataFrame Pandas
Comment ajouter une ligne d’en-tête à un DataFrame Pandas