838 Stimmen

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

Wie konvertiert man einen Index eines DataFrame in eine Spalte?

Zum Beispiel:

        gi       ptt_loc
 0  384444683      593  
 1  384444684      594 
 2  384444686      596  

zu

    index1    gi       ptt_loc
 0  0     384444683      593  
 1  1     384444684      594 
 2  2     384444686      596

13voto

rohetoric Punkte 259

Dies sollte den Trick tun (wenn keine Mehrfachebenen-Indizierung vorhanden ist) -

df.reset_index().rename({'index':'index1'}, axis = 'columns')

Code Ergebnis

Und natürlich können Sie immer inplace = True setzen, wenn Sie dies nicht der Funktion parameter von rename zuweisen möchten.

6voto

not a robot Punkte 3525

Um den Index (der in eine Spalte umgewandelt wurde) als Index zu behalten, verwenden Sie eine Kombination aus to_frame() und join(). Dies erzeugt insbesondere keine SettingWithCopyWarning, im Gegensatz zur Zuweisung.

df = df.index.to_frame(name='A').join(df)

res1

Dies funktioniert auch für MultiIndex.

df = df.index.to_frame(name=['A', 'B']).join(df)

Außerdem, wie Quinten erwähnt, seit pandas 1.5.0 sind die Syntaxen rename_axis + reset_index (oder reset_index + rename) überflüssig geworden. Sie können direkt names= als Argument an reset_index() übergeben. Sogar doppelte Spaltennamen sind erlaubt, wenn allow_duplicates=True angegeben wird (obwohl doppelte Spaltenbezeichnungen sehr unangebracht sind).

df = df.reset_index(names=['A', 'B'])

res2

5voto

Avneesh Hota Punkte 51
df1 = pd.DataFrame({"gi":[232,66,34,43],"ptt":[342,56,662,123]})
p = df1.index.values
df1.insert( 0, column="new",value = p)
df1

    new     gi     ptt
0    0      232    342
1    1      66     56 
2    2      34     662
3    3      43     123

4voto

Francesco Pinna Punkte 71

Ich mache es normalerweise so:

df = df.assign(index1=df.index)

2voto

Quinten Punkte 12670

In der neuesten Version von pandas 1.5.0 können Sie die Funktion reset_index mit dem neuen Argument names verwenden, um eine Liste von Namen anzugeben, die Sie den Indexspalten geben möchten. Hier ist ein reproduzierbares Beispiel mit einer Indexspalte:

import pandas as pd

df = pd.DataFrame({"gi":[232,66,34,43],"ptt":[342,56,662,123]})

    gi  ptt
0  232  342
1   66   56
2   34  662
3   43  123

df.reset_index(names=['new'])

Output:

   new   gi  ptt
0    0  232  342
1    1   66   56
2    2   34  662
3    3   43  123

Dies kann auch einfach mit MultiIndex angewendet werden. Erstellen Sie einfach eine Liste mit den gewünschten Namen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X