1369 Stimmen

Erhalten Sie eine Liste von Pandas DataFrame-Spaltenüberschriften

Ich möchte eine Liste der Spaltenüberschriften aus einem Pandas DataFrame erhalten. Das DataFrame wird vom Benutzer eingegeben, daher werde ich nicht wissen, wie viele Spalten es geben wird oder wie sie genannt werden.

Zum Beispiel, wenn ich ein DataFrame wie dieses gegeben habe:

    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7
5   4    8    3
6   8    2    8
7   9    9   10
8   6    6    4
9  10   10    7

Ich würde eine Liste wie diese erhalten:

['y', 'gdp', 'cap']

3voto

Wie von Simeon Visser beantwortet, könnten Sie Folgendes tun:

list(my_dataframe.columns.values)

oder

list(my_dataframe) # Weniger Tipparbeit.

Aber ich denke, der beste Weg ist:

list(my_dataframe.columns)

Es ist explizit und gleichzeitig nicht unnötig lang.

2voto

StefanK Punkte 2030

Ich finde, die Frage verdient eine zusätzliche Erklärung.

Wie fixxxer bemerkt hat, hängt die Antwort von der Pandas-Version ab, die du in deinem Projekt verwendest. Die du mit dem Befehl pd.__version__ erhalten kannst.

Wenn du aus irgendeinem Grund wie ich (auf Debian 8 (Jessie) verwende ich 0.14.1) eine ältere Version von Pandas als 0.16.0 verwendest, dann musst du folgendes verwenden:

df.keys().tolist(), weil es keine df.columns Methode gibt.

Der Vorteil dieser keys Methode ist, dass sie auch in neueren Versionen von Pandas funktioniert, also ist sie universeller.

1voto

totalhack Punkte 1650

Wenn der DataFrame zufälligerweise einen Index oder MultiIndex hat und Sie möchten, dass diese auch als Spaltennamen enthalten sind:

names = list(filter(None, df.index.names + df.columns.values.tolist()))

Dies vermeidet den Aufruf von reset_index(), der für eine so einfache Operation unnötige Leistungseinbußen hat.

I ch bin schon öfter auf dieses Problem gestoßen, weil ich Daten aus Datenbanken hin- und hertransportiere, bei denen der DataFrame-Index auf einen Primär-/Eindeutigkeitsschlüssel abbildet, der für mich jedoch nur eine weitere "Spalte" ist. Es würde wahrscheinlich Sinn machen, wenn pandas eine integrierte Methode für so etwas hätte (es ist durchaus möglich, dass ich sie übersehen habe).

1voto

Dies ist der einfachste Weg, um Ihr Ziel zu erreichen.

my_dataframe.columns.values.tolist()

und wenn Sie faul sind, probieren Sie das >

list(my_dataframe)

1voto

user21988 Punkte 67
n = []
für i in my_dataframe.columns:
    n.append(i)
print n

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