Sostituisci i valori delle colonne in Pandas DataFrame
-
Usa il metodo
map()
per sostituire i valori delle colonne in Pandas -
Utilizza il metodo
loc
per sostituire il valore della colonna in Pandas - Sostituisci i valori delle colonne con le condizioni in Pandas DataFrame
-
Usa il metodo
replace()
per modificare i valori
In questo tutorial, introdurremo come sostituire i valori delle colonne in Pandas DataFrame. Tratteremo tre diverse funzioni per sostituire facilmente i valori delle colonne.
Usa il metodo map()
per sostituire i valori delle colonne in Pandas
Le colonne di DataFrame sono le Series
di Pandas. Possiamo usare il metodo map
per sostituire ogni valore in una colonna con un altro valore.
Series.map()
Sintassi
Series.map(arg, na_action=None)
- Parametri:
arg
: questo parametro è utilizzato per mappare unaSeries
. Potrebbe essere una collezione o una funzione.na_action
: è usato per trattare i valoriNaN
(Not a Number
). Potrebbero essere necessari due valori:None
oignore
.None
è l’impostazione predefinita emap()
applicherà la mappatura a tutti i valori, inclusi i valoriNan
;ignore
lascia i valoriNaN
così come sono nella colonna senza passarli al metodo di mappatura.
Restituisce una Series
con lo stesso indice.
Facciamo ora un esempio per implementare il metodo map
. Useremo lo stesso DataFrame
negli esempi seguenti.
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)
Produzione:
name city
0 michael berlin
1 louis paris
2 jack roma
3 jasmine NaN
Sostituisci i valori delle colonne con la raccolta in 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)
Produzione:
name city
0 michael dubai
1 louis moscow
2 jack milan
3 jasmine NY
I valori originali della colonna DataFrame city
sono sostituiti con i nuovi valori del dizionario come primo parametro nel metodo map()
.
Sostituisci i valori delle colonne con la funzione in 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)
Produzione:
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
na_action
è None
per impostazione predefinita, quindi è per questo che il NaN
nella colonna originale è anche sostituito con la nuova stringa I am from nan
.
Se preferisci mantenere NaN
ma non sostituito, puoi impostare na_action
su 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)
Produzione:
name city
0 michael I am from berlin
1 louis I am from paris
2 jack I am from roma
3 jasmine NaN
Utilizza il metodo loc
per sostituire il valore della colonna in Pandas
Un altro modo per sostituire il valore della colonna DataFrame di Pandas è il metodo loc()
del DataFrame
. Il metodo loc()
accede ai valori tramite le loro etichette.
DataFrame.loc[]
Sintassi
pandas.DataFrame.loc[condition, column_label] = new_value
- Parametri:
condition
: questo parametro restituisce i valori che rendono vera la condizionecolumn_label
: questo parametro viene utilizzato per specificare la colonna target da aggiornare
Dopo aver determinato il valore tramite i parametri, lo aggiorniamo a new_value
.
Facciamo ora un esempio per implementare il metodo loc
. Useremo il seguente DataFrame
come esempio.
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)
Produzione:
name grades result
0 michael 30 N/A
1 louis 70 N/A
2 jack 40 N/A
3 jasmine 80 N/A
Sostituisci i valori delle colonne con le condizioni in Pandas DataFrame
Possiamo utilizzare condizioni booleane per specificare gli elementi mirati.
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)
Produzione:
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'
sostituisce i valori nella colonna grades
con sucess
se i valori sono maggiori di 50.
df.loc[df.grades<50,'result']='fail'
sostituisce i valori nella colonna grades
con fail
se i valori sono inferiori a 50.
Usa il metodo replace()
per modificare i valori
Un altro modo per sostituire i valori delle colonne in Pandas DataFrame è il metodo Series.replace()
.
Series.replace()
Sintassi
- Sostituisci un singolo valore
df[column_name].replace([old_value], new_value)
- Sostituisci più valori con lo stesso valore
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
- Sostituisci più valori con più valori
df[column_name].replace(
[old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
- Sostituisci un valore con un nuovo valore per l’intero DataFrame
df.replace([old_value], new_value)
Useremo il seguente DataFrame per il resto degli esempi.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
print(df)
Produzione:
name salary
0 michael 700
1 louis 800
2 jack 1000
3 jasmine 1200
Sostituisci i valori delle colonne con più valori in 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["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])
print(df)
Produzione:
name salary
0 karl 700
1 lionel 800
2 jack 1000
3 jasmine 1200
Sostituisci i valori delle colonne solo con lo stesso valore in 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)
Produzione:
name salary
0 karl 700
1 lionel 800
2 jack 1500
3 jasmine 1500
Sostituisci il valore della colonna con un valore in 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)
Produzione:
name salary
0 karl 750
1 lionel 800
2 jack 1000
3 jasmine 1200
Sostituisci i valori nell’intero DataFrame 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)
Produzione:
name salary
0 karl 750
1 lionel 800
2 jack 1400
3 jasmine 1400
Articolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum