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.

Articolo correlato - Pandas DataFrame

  • Aggiungi una nuova colonna a DataFrame esistente con valore predefinito in Pandas
  • Scrivi un Pandas DataFrame in CSV