Remplacer les valeurs des colonnes dans Pandas DataFrame

Mohamed Ayman 10 octobre 2023
  1. Utiliser la méthode map() pour remplacer les valeurs de colonnes dans les Pandas
  2. Utilisez la méthode loc pour remplacer la valeur de la colonne dans Pandas
  3. Remplacer les valeurs des colonnes par des conditions dans Pandas DataFrame
  4. Utilisez la méthode replace() pour modifier les valeurs
Remplacer les valeurs des colonnes dans Pandas DataFrame

Dans ce tutoriel, nous allons présenter comment remplacer les valeurs des colonnes dans Pandas DataFrame. Nous couvrirons trois fonctions différentes pour remplacer facilement les valeurs des colonnes.

Utiliser la méthode map() pour remplacer les valeurs de colonnes dans les Pandas

Les colonnes de DataFrame sont des Series de pandas. Nous pouvons utiliser la méthode map pour remplacer chaque valeur d’une colonne par une autre valeur.

Syntaxe Series.map() Syntaxe

Series.map(arg, na_action=None)
  • Paramètres :
  1. arg : ce paramètre est utilisé pour cartographier une Series. Il peut s’agir d’une collection ou d’une fonction.
  2. na_action : Il est utilisé pour traiter les valeurs NaN (Not a Number). Il peut prendre deux valeurs - None ou ignore. None est la valeur par défaut, et map() appliquera le mapping à toutes les valeurs, y compris les valeurs Nan ; ignore laisse les valeurs NaN telles quelles dans la colonne sans les passer à la méthode de mapping.

Il retourne une Series avec le même index.

Prenons maintenant un exemple pour implémenter la méthode de map. Nous utiliserons le même DataFrame dans les exemples ci-dessous.

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

print(df)

Production :

      name    city
0  michael  berlin
1    louis   paris
2     jack    roma
3  jasmine     NaN

Remplacer les valeurs des colonnes par la collecte dans Pandas DataFrame

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values with collection

df["city"] = df["city"].map(
    {"berlin": "dubai", "paris": "moscow", "roma": "milan", np.nan: "NY"},
    na_action=None,
)

print(df)

Production :

      name    city
0  michael   dubai
1    louis  moscow
2     jack   milan
3  jasmine      NY

Les valeurs des colonnes originales de la DataFrame city sont remplacées par les nouvelles valeurs du dictionnaire comme premier paramètre de la méthode map().

Remplacement des valeurs de colonne par une fonction dans Pandas DataFrame

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values with function

df["city"] = df["city"].map("I am from {}".format)

print(df)

Production :

      name              city
0  michael  I am from berlin
1    louis   I am from paris
2     jack    I am from roma
3  jasmine     I am from nan

La na_action est None par défaut, c’est pourquoi la NaN dans la colonne originale est également remplacée par la nouvelle chaîne I am from nan.

Si vous préférez garder le NaN mais pas le remplacer, vous pouvez définir le na_action comme ignore.

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values excluding NaN

df["city"] = df["city"].map("I am from {}".format, na_action="ignore")

print(df)

Production :

      name              city
0  michael  I am from berlin
1    louis   I am from paris
2     jack    I am from roma
3  jasmine               NaN

Utilisez la méthode loc pour remplacer la valeur de la colonne dans Pandas

Une autre façon de remplacer la valeur de la colonne Pandas DataFrame est la méthode loc() de la DataFrame. La méthode loc() accède aux valeurs par le biais de leurs étiquettes.

Syntaxe de DataFrame.loc[]

pandas.DataFrame.loc[condition, column_label] = new_value
  • Paramètres :
  1. condition : ce paramètre retourne les valeurs qui rendent la condition vraie
  2. column_label : ce paramètre est utilisé pour spécifier la colonne ciblée à mettre à jour

Après avoir déterminé la valeur par le biais des paramètres, nous la mettons à jour en new_value.

Prenons maintenant un exemple pour implémenter la méthode loc. Nous utiliserons le DataFrame ci-dessous comme exemple.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "grades": [30, 70, 40, 80],
    "result": ["N/A", "N/A", "N/A", "N/A"],
}

df = pd.DataFrame(data, columns=["name", "grades", "result"])

print(df)

Production :

      name  grades result
0  michael      30    N/A
1    louis      70    N/A
2     jack      40    N/A
3  jasmine      80    N/A

Remplacer les valeurs des colonnes par des conditions dans Pandas DataFrame

Nous pouvons utiliser des conditions booléennes pour préciser les éléments visés.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "grades": [30, 70, 40, 80],
    "result": ["N/A", "N/A", "N/A", "N/A"],
}

df = pd.DataFrame(data, columns=["name", "grades", "result"])

df.loc[df.grades > 50, "result"] = "success"

df.loc[df.grades < 50, "result"] = "fail"

print(df)

Production :

      name  grades   result
0  michael      30     fail
1    louis      70  success
2     jack      40     fail
3  jasmine      80  success

df.loc[df.grades>50, 'result']='success' remplace les valeurs dans la colonne grades par success si les valeurs sont supérieures à 50.

df.loc[df.grades<50,'result']='fail' remplace les valeurs de la colonne grades par fail si les valeurs sont inférieures à 50.

Utilisez la méthode replace() pour modifier les valeurs

Une autre façon de remplacer les valeurs des colonnes dans Pandas DataFrame est la méthode Series.replace().

Syntaxe Series.replace()

  • Remplacer une seule valeur
df[column_name].replace([old_value], new_value)
  • Remplacer plusieurs valeurs par la même valeur
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
  • Remplacer les valeurs multiples par des valeurs multiples
df[column_name].replace(
    [old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
  • Remplacer une valeur par une nouvelle valeur pour l’ensemble du DataFrame
df.replace([old_value], new_value)

Nous utiliserons le DataFrame ci-dessous pour le reste des exemples.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

print(df)

Production :

      name  salary
0  michael     700
1    louis     800
2     jack    1000
3  jasmine    1200

Remplacer les valeurs des colonnes par des valeurs multiples dans le DataFrame de Pandas

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])

print(df)

Production :

      name  salary
0     karl     700
1   lionel     800
2     jack    1000
3  jasmine    1200

Remplacer les valeurs des colonnes par la même valeur dans Pandas DataFrame

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["salary"] = df["salary"].replace([1000, 1200], 1500)

print(df)

Production :

      name  salary
0     karl     700
1   lionel     800
2     jack    1500
3  jasmine    1500

Remplacer la valeur de la colonne par une valeur dans Pandas DataFrame

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["salary"] = df["salary"].replace([700], 750)

print(df)

Production :

      name  salary
0     karl     750
1   lionel     800
2     jack    1000
3  jasmine    1200

Remplacer les valeurs dans l’ensemble du DataFrame de Pandas

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1000],
}

df = pd.DataFrame(data, columns=["name", "salary"])


df = df.replace([1000], 1400)

print(df)

Production :

      name  salary
0     karl     750
1   lionel     800
2     jack    1400
3  jasmine    1400

Article connexe - Pandas DataFrame