Modificare l'ordine delle colonne DataFrame di Pandas

Asad Riaz 25 aprile 2021
  1. Elenca le colonne nell’ordine appena desiderato in Pandas
  2. insert Nuova colonna con la posizione specifica in Pandas
  3. Colonna reindex per Ordine dato in Pandas
Modificare l'ordine delle colonne DataFrame di Pandas

Introdurremo come cambiare l’ordine delle colonne DataFrame, con diversi metodi come assegnare i nomi delle colonne nell’ordine che vogliamo, usando insert e reindex.

Elenca le colonne nell’ordine appena desiderato in Pandas

Il modo più semplice è riassegnare il DataFrame con una lista di colonne, o semplicemente assegnare i nomi delle colonne nell’ordine che vogliamo:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    {
        "a": ["1", "2", "3", "4"],
        "b": [16, 7, 6, 16],
        "c": [61, 57, 16, 36],
        "d": ["12", "22", "13", "44"],
        "e": ["Green", "Red", "Blue", "Yellow"],
        "f": [1, 11, 23, 66],
    }
)
print(df)
df = df[["e", "c", "b", "f", "d", "a"]]
print("Rearranging ..................")
print("..............................")
print(df)

Produzione:

   a   b   c   d       e   f
0  1  16  61  12   Green   1
1  2   7  57  22     Red  11
2  3   6  16  13    Blue  23
3  4  16  36  44  Yellow  66
Rearranging ..................
..............................
        e   c   b   f   d  a
0   Green  61  16   1  12  1
1     Red  57   7  11  22  2
2    Blue  16   6  23  13  3
3  Yellow  36  16  66  44  4

insert Nuova colonna con la posizione specifica in Pandas

Se stiamo creando una nuova colonna possiamo inserirla in qualsiasi posizione vogliamo:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    {
        "a": ["1", "2", "3", "4"],
        "b": [16, 7, 6, 16],
        "c": [61, 57, 16, 36],
        "d": ["12", "22", "13", "44"],
        "e": ["Green", "Red", "Blue", "Yellow"],
        "f": [1, 11, 23, 66],
    }
)
print(df)
print("Inserting ..................")
print("..............................")
df.insert(0, "newColMean", df.mean(1))
print(df)

Produzione:

   newColMean  a   b   c   d       e   f
0   26.000000  1  16  61  12   Green   1
1   25.000000  2   7  57  22     Red  11
2   15.000000  3   6  16  13    Blue  23
3   39.333333  4  16  36  44  Yellow  66

Colonna reindex per Ordine dato in Pandas

reindex è probabilmente il modo più efficiente per riorganizzare la colonna:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    {
        "a": ["1", "2", "3", "4"],
        "b": [16, 7, 6, 16],
        "c": [61, 57, 16, 36],
        "d": ["12", "22", "13", "44"],
        "e": ["Green", "Red", "Blue", "Yellow"],
        "f": [1, 11, 23, 66],
    }
)
print(df)
print("Rearranging ..................")
print("..............................")
df = df.reindex(columns=["a", "f", "d", "b", "c", "e"])
print(df)

Produzione:

   a   b   c   d       e   f
0  1  16  61  12   Green   1
1  2   7  57  22     Red  11
2  3   6  16  13    Blue  23
3  4  16  36  44  Yellow  66
Rearranging ..................
..............................
   a   f   d   b   c       e
0  1   1  12  16  61   Green
1  2  11  22   7  57     Red
2  3  23  13   6  16    Blue
3  4  66  44  16  36  Yellow

Articolo correlato - Pandas DataFrame

Articolo correlato - Pandas DataFrame Column