Applicare una funzione a più colonne in Pandas DataFrame
Questo articolo introdurrà come applicare una funzione a più colonne in Pandas DataFrame. Useremo lo stesso DataFrame come sotto in tutti i codici di esempio.
import pandas as pd
import numpy as np
df = pd.DataFrame(
[[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)
Produzione:
a b c d
0 5 6 7 8
1 1 9 12 14
2 4 8 10 6
Usa apply()
per applicare le funzioni alle colonne in Pandas
Il metodo apply()
consente di applicare una funzione per un intero DataFrame, sia su colonne che su righe. Impostiamo il parametro axis
come 0 per le righe e 1 per le colonne.
Negli esempi mostrati di seguito, incrementeremo il valore di un DataFrame di esempio utilizzando la funzione che abbiamo definito in precedenza:
import pandas as pd
import numpy as np
df = pd.DataFrame(
[[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)
def x(a):
return a + 1
df_new = df.apply(x, axis=1)
print("The original dataframe:")
print(df)
print("The new dataframe:")
print(df_new)
Produzione:
The original dataframe:
a b c d
0 5 6 7 8
1 1 9 12 14
2 4 8 10 6
The new dataframe:
a b c d
0 6 7 8 9
1 2 10 13 15
2 5 9 11 7
Possiamo anche applicare una funzione a più colonne, come mostrato di seguito:
import pandas as pd
import numpy as np
df = pd.DataFrame(
[[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)
print("The original dataframe:")
print(df)
def func(x):
return x[0] + x[1]
df["e"] = df.apply(func, axis=1)
print("The new dataframe:")
print(df)
Produzione:
The original dataframe:
a b c d
0 5 6 7 8
1 1 9 12 14
2 4 8 10 6
The new dataframe:
a b c d e
0 5 6 7 8 11
1 1 9 12 14 10
2 4 8 10 6 12
La nuova colonna e
aggiunta è la somma dei dati nelle colonne a
e b
. Il DataFrame stesso è l’argomento nascosto passato alla funzione. È possibile accedere alle colonne con l’indice come nell’esempio precedente o con il nome della colonna, come mostrato di seguito.
import pandas as pd
import numpy as np
df = pd.DataFrame(
[[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)
print("The original dataframe:")
print(df)
df["e"] = df.apply(lambda x: x.a + x.b, axis=1)
print("The new dataframe:")
print(df)
Esegue la stessa operazione dell’esempio precedente. Usiamo una funzione lambda
qui. x.a
e x.b
si riferiscono alla colonna a
e b
nel dataframe.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArticolo 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