Funzione Pandas DataFrame DataFrame.apply()
-
Sintassi di
pandas.DataFrame.apply()
: -
Codici di esempio: metodo
DataFrame.apply()
-
Codici di esempio: applica la funzione a ciascuna colonna con
DataFrame.apply()
-
Codici di esempio: applica la funzione a ciascuna riga con il metodo
DataFrame.apply()
-
Codici di esempio: Metodo
DataFrame.apply()
con parametroresult_type
La funzione pandas.DataFrame.apply()
applica la funzione di input a ogni elemento lungo la riga o la colonna del chiamante Pandas DataFrame
.
Sintassi di pandas.DataFrame.apply()
:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
Parametri
func |
La funzione da applicare a ogni riga o colonna |
axis |
applica la funzione lungo la riga (axis = 0) o la colonna (axis = 1) |
raw |
Booleano. Riga / colonna passata come oggetto Series (raw=False ) o oggetto ndarray (raw=True ) |
result_type |
{'expand' , 'reduce' , 'broadcast' , 'None' } tipo di output dell’operazione applicabile solo per axis=1 (colonne) Novità nella versione 0.23.0 |
args |
Argomenti posizionali per la funzione func . |
**kwds |
Argomenti delle parole chiave per la funzione func . |
Ritorno
Restituisce il DataFrame
dopo aver applicato la funzione di input lungo l’asse specificato.
Codici di esempio: metodo DataFrame.apply()
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)
Produzione:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 9 64
Applichiamo una funzione lambda
lambda x: x**2
a tutti gli elementi di DataFrame
utilizzando il metodo DataFrame.apply()
.
Le funzioni Lambda sono modi più semplici per definire funzioni in Python.
lambda x: x**2
rappresenta la funzione che accetta x
come input e restituisce x**2
come output.
Codici di esempio: applica la funzione a ciascuna colonna con DataFrame.apply()
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)
Produzione:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
X 6
Y 13
dtype: int64
Qui, np.sum
viene applicato a ciascuna colonna perché axis=0
(valore predefinito) in questo caso.
Quindi, otteniamo la somma degli elementi in ogni colonna dopo aver usato il metodo df.apply()
.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name == 'X' else x)
print(modified_df)
Produzione:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 4
1 4 1
2 9 8
Se desideriamo applicare la funzione solo a determinate colonne, modifichiamo la nostra definizione di funzione utilizzando l’istruzione if per filtrare le colonne. Nell’esempio, la funzione modifica il valore delle sole colonne con il nome di colonna X
.
Codici di esempio: applica la funzione a ciascuna riga con il metodo DataFrame.apply()
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)
Produzione:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 5
1 3
2 11
dtype: int64
Qui, np.sum
viene applicato a ciascuna riga alla volta poiché in questo caso abbiamo impostato axis=1
.
Quindi, otteniamo la somma dei singoli elementi di tutte le righe dopo aver utilizzato il metodo df.apply()
.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name in [0,1] else x,
axis=1)
print(modified_df)
Produzione:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 3 8
Se desideriamo applicare la funzione solo a determinate righe, modifichiamo la nostra definizione di funzione utilizzando l’istruzione if per filtrare le righe. Nell’esempio, la funzione modifica i valori solo delle righe con indice 0
e 1
cioè solo la prima e la seconda riga.
Codici di esempio: Metodo DataFrame.apply()
con parametro result_type
Se usiamo il valore predefinito del parametro result_type
cioè None
, restituirà il DataFrame
senza alcuna modifica.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)
Produzione:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 [1, 1]
1 [1, 1]
2 [1, 1]
dtype: object
Nell’esempio precedente, ogni riga viene passata alla funzione alla volta e il valore della riga è impostato su [1,1]
.
Se desideriamo modificare il tipo di risultato dopo che la funzione opera su DataFrame
, possiamo impostare i valori per result_type
secondo le nostre esigenze.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],
axis=1,
result_type='expand')
print("Modified DataFrame")
print(modified_df)
Produzione:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 1
0 1 1
1 1 1
2 1 1
L’impostazione di result_type='expand'
espanderà tutti i valori simili a liste in colonne di un Dataframe.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn