Wie man den Index eines Pandas-Datenrahmens in eine Spalte umwandelt

  1. df.index um den Index als neue Spalte hinzuzufügen
  2. reset_index mit rename_axis um den aktuellen Index-Spaltennamen umzubenennen
  3. set_index Methode um die Spalte in einen Index umzuwandeln
  4. MultiIndex um mehrere Schichten von Indexes auf column zu setzen

Wir werden verschiedene Methoden vorstellen, um den Index eines Pandas dataframe in eine Spalte umzuwandeln, wie z.B. df.index, set_index, und reset_index mit rename_axis, um den Index umzubenennen.

Wir werden auch vorstellen, wie wir MultiIndex auf einen gegebenen Dataframe mit mehreren Indexschichten anwenden können.

df.index um den Index als neue Spalte hinzuzufügen

Der einfachste Weg, einen Index als Spalte hinzuzufügen, ist das Hinzufügen von df.index als neue Spalte zu dataframe.

Betrachten Sie den folgenden Code:

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)
    ],columns=['a','b','d'])
df['index'] = df.index
print(df)

Ausgabe:

     a    b    d  index1
0  1.0  2.0  NaN       0
1  NaN  4.0  NaN       1
2  5.0  NaN  7.0       2
3  5.0  NaN  NaN       3

reset_index mit rename_axis um den aktuellen Index-Spaltennamen umzubenennen

Wir können den Namen unseres Index ändern und dann reset_index zu einer Series verwenden:

# python 3.x
import pandas as pd

df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)], 
    columns=['a','b','d'])
df = df.rename_axis('index').reset_index()
print(df)

Ausgabe:

   index    a    b    d
0      0  1.0  2.0  NaN
1      1  NaN  4.0  NaN
2      2  5.0  NaN  7.0
3      3  5.0  NaN  NaN

set_index Methode um die Spalte in einen Index umzuwandeln

Wir können jede Spalte mit der Methode set_index in index umwandeln:

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,4,7),
    (5,5,None)], 
    columns=['a','b','d'])
df.set_index('b',inplace=True)
print(df)

Ausgabe:

     a    d
b          
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

Oder wenn wir den index Namen entfernen wollen, wie im Original, können wir df.index.name = None ausführen:

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,4,7),
    (5,5,None)
    ],columns=['a','b','d'])
df.set_index('b',inplace=True)
df.index.name = None
print(df)

Ausgabe:

     a    d
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

MultiIndex um mehrere Schichten von Indexes auf column zu setzen

Wir können die Funktion MultiIndex.from_product() verwenden, um einen MultiIndex wie folgt zu erstellen:

# python 3.x
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product([
    ['Burger', 'Steak', 'Sandwich'], 
    ['Half', 'Full']], 
    names=['Item', 'Type'])
df = pd.DataFrame(index=index, 
                  data=np.random.randint
                  (0, 10, (6,4)), 
                  columns=list('abcd'))
print(df)

Ausgabe:

               a  b  c  d
Item     Type            
Burger   Half  0  3  9  1
         Full  2  2  0  5
Steak    Half  8  4  5  5
         Full  5  8  0  7
Sandwich Half  2  8  9  5
         Full  4  4  5  9

Verwandter Artikel - Pandas DataFrame

  • Wie man die Reihenfolge der Pandas DataFrame-Spalten ändert
  • Wie man eine Zeile basierend auf einem Spaltenwert in Pandas DataFrame löscht
  • comments powered by Disqus