Applicare una funzione a più colonne in Pandas DataFrame

Manav Narula 30 marzo 2021
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.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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.

LinkedIn

Articolo correlato - Pandas DataFrame