Rinomina colonne in Pandas DataFrame

Puneet Dobhal 30 gennaio 2023
  1. Rinomina le colonne in Pandas DataFrame utilizzando il metodo DataFrame.columns
  2. Rinomina le colonne in Pandas DataFrame usando il metodo DataFrame.rename()
  3. Rinomina colonne in Pandas DataFrame utilizzando il metodo DataFrame.set_axis()
Rinomina colonne in Pandas DataFrame

Spesso è necessario rinominare una colonna in Pandas quando si esegue l’analisi dei dati. Questo articolo introdurrà diversi metodi per rinominare i nomi delle colonne Pandas in Pandas DataFrame.

Rinomina le colonne in Pandas DataFrame utilizzando il metodo DataFrame.columns

Questo metodo è piuttosto semplice e ti consente di rinominare le colonne direttamente. Possiamo assegnare una lista di nuovi nomi di colonna utilizzando l’attributo DataFrame.columns come segue:

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45], ["Peter", 21, 62], ["Scot", 25, 68]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))
example_df.columns = ["Name", "Age", "Roll_no"]

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Produzione:

Original DataFrame
    Name  Age  Marks
0   John   20     45
1  Peter   21     62
2   Scot   25     68

Modified DataFrame
    Name  Age  Roll_no
0   John   20       45
1  Peter   21       62
2   Scot   25       68

Uno svantaggio di questo approccio è che devi elencare l’intera colonna anche se solo una delle colonne deve essere rinominata. La specifica dell’intero lista di colonne diventa impraticabile quando si dispone di un numero elevato di colonne.

Rinomina le colonne in Pandas DataFrame usando il metodo DataFrame.rename()

L’approccio alternativo al metodo precedente utilizza il metodo DataFrame.rename(). Questo metodo è molto utile quando non è necessario rinominare tutte le colonne.

Dovremo specificare il vecchio nome della colonna come chiave e i nuovi nomi come valori.

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45, 78], ["Peter", 21, 62, 68], ["Scot", 25, 68, 95]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks", "Roll_no"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))
example_df.rename(columns={"Marks": "Roll_no", "Roll_no": "Marks"}, inplace=True)

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Produzione:

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

Il vantaggio più significativo di questo metodo è che puoi specificare tutte le colonne che desideri. È molto utile quando è necessario rinominare colonne specifiche e, a differenza dei metodi precedenti, non è necessario elencare l’intero lista di colonne per il DataFrame.

Potresti notare che nella chiamata alla funzione DataFrame.rename(), abbiamo specificato il parametro inplace come True. Il parametro inplace è di default False e determina se restituire o meno un nuovo pandas DataFrame.

Specificarlo come True significa che la chiamata alla funzione non restituisce un nuovo pandas DataFrame ma cambia il DataFrame esistente al suo posto.

Rinomina colonne in Pandas DataFrame utilizzando il metodo DataFrame.set_axis()

Un altro metodo conveniente per rinominare le colonne di pandas DataFrame. Dobbiamo specificare l’intero lista di colonne durante l’utilizzo di questo metodo.

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45, 78], ["Peter", 21, 62, 68], ["Scot", 25, 68, 95]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks", "Roll_no"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))

example_df.set_axis(["Name", "Age", "Roll_no", "Marks"], axis="columns", inplace=True)

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Produzione:

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

Articolo correlato - Pandas DataFrame