Applicare una funzione a una colonna in Pandas Dataframe
-
I metodi pandas
apply()
etransform()
-
Usa
apply()
per applicare una funzione alla colonna DataFrame di Pandas -
Usa
transform()
per applicare una funzione alla colonna DataFrame di Pandas
In Pandas, colonne e dataframe possono essere trasformati e manipolati usando metodi come apply()
e transform()
. Le trasformazioni desiderate vengono passate come argomenti ai metodi come funzioni. Ogni metodo ha le sue sottili differenze e utilità. Questo articolo introdurrà come applicare una funzione a una colonna o a un intero dataframe.
I metodi pandas apply()
e transform()
Entrambi i metodi apply()
e transform()
operano su singole colonne e sull’intero dataframe. Il metodo apply()
applica la funzione lungo un asse specificato. Passa le colonne come un dataframe alla funzione personalizzata, mentre un metodo transform()
passa le singole colonne come pandas Series
alla funzione personalizzata.
L’output del metodo apply()
viene ricevuto sotto forma di un dataframe o Series
a seconda dell’input, mentre come sequenza per il metodo transform()
. Entrambe le sintassi dei metodi apply()
e transform()
sono simili a:
Dataframe.apply(customFunction, axis=0)
Dataframe.transform(customFunction, axis=0)
Gli argomenti corrispondono a
customFunction
: la funzione da applicare al dataframe o alla serie.axis
: 0 si riferisce a'rows'
e 1 si riferisce a'columns'
; la funzione deve essere applicata su righe o colonne.
Usa apply()
per applicare una funzione alla colonna DataFrame di Pandas
Ora che abbiamo imparato le basi, mettiamo le mani sui codici e capiamo come usare il metodo apply()
per applicare una funzione a una colonna di dataframe.
Useremo il dataframe di esempio come di seguito.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
Il codice di esempio per applicare una funzione all’intero DataFrame è mostrato di seguito.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.apply(add_2)
print(df)
Produzione:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
Come visto sopra, la funzione può essere applicata a tutto il dataframe.
Applicare una funzione a una singola colonna
Vediamo cosa succede quando la funzione viene applicata lungo una singola colonna.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].apply(add_2)
print(df)
# or #
df["A"].transform(add_2)
print(df)
Produzione:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9
Un altro esempio di applicazione di una funzione a una singola colonna
import numpy as np
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{"A": [20, 30, 15, 25, 20], "B": [4, 5, 6, 4, 6], "C": [12, 15, 13, 12, 14]}
)
print("Initial DataFrame:")
print(data)
print("")
updated_df = data.apply(lambda x: x - 5 if x.name == "A" else x)
print("Updated DataFrame:")
print(updated_df)
Produzione:
Initial DataFrame:
A B C
0 20 4 12
1 30 5 15
2 15 6 13
3 25 4 12
4 20 6 14
Updated DataFrame:
A B C
0 15 4 12
1 25 5 15
2 10 6 13
3 20 4 12
4 15 6 14
Qui applichiamo la funzione lambda
definita per ogni colonna nel DataFrame. La funzione sottrae il valore di ogni colonna per 5
solo se il nome della colonna è A
.
import numpy as np
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{"A": [20, 30, 15, 25, 20], "B": [4, 5, 6, 4, 6], "C": [12, 15, 13, 12, 14]}
)
print("Initial DataFrame:")
print(data)
print("")
data["A"] = data["A"].apply(lambda x: x - 5)
print("Updated DataFrame:")
print(data)
Produzione:
Initial DataFrame:
A B C
0 20 4 12
1 30 5 15
2 15 6 13
3 25 4 12
4 20 6 14
Updated DataFrame:
A B C
0 15 4 12
1 25 5 15
2 10 6 13
3 20 4 12
4 15 6 14
Applica la funzione lambda
solo alla colonna A
del DataFrame, e infine assegniamo i valori restituiti alla colonna A
del DataFrame esistente.
Usa transform()
per applicare una funzione alla colonna DataFrame di Pandas
Vediamo come utilizzare il metodo transform()
per applicare una funzione a una colonna di dataframe. Useremo lo stesso dataframe di esempio come sopra.
Il codice di esempio per applicare una funzione all’intero DataFrame è mostrato di seguito.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.transform(add_2)
print(df)
Produzione:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
Come visto sopra, la funzione può essere applicata all’intero dataframe.
Applicare una funzione a una singola colonna
Vediamo cosa succede quando la funzione viene applicata lungo una singola colonna.
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].transform(add_2)
print(df)
Produzione:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9
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