tutorial - python pandas series to dataframe
Holen Sie sich eine Liste von pandas DataFrame-Spaltenüberschriften (10)
Ich möchte eine Liste der Spaltenüberschriften von einem Pandas DataFrame bekommen. Der DataFrame kommt von Benutzereingaben, so dass ich nicht weiß, wie viele Spalten es gibt oder wie sie aufgerufen werden.
Zum Beispiel, wenn ich einen DataFrame wie folgt erhalten habe:
>>> my_dataframe
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 möchte eine Liste wie folgt erhalten:
>>> header_list
[y, gdp, cap]
Im Notizbuch
Für die Datensuche im IPython-Notizbuch ist meine bevorzugte Vorgehensweise:
sorted(df)
Dadurch wird eine alphabetisch sortierte Liste erstellt.
In einem Code-Repository
Im Code finde ich es expliziter zu tun
df.columns
Weil es anderen, die Ihren Code lesen, sagt, was Sie tun.
Das steht als my_dataframe.columns
zur Verfügung.
Es ist interessant, aber df.columns.values.tolist()
ist fast 3 mal schneller als df.columns.tolist()
aber ich dachte, dass sie gleich sind:
In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop
In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop
Es wird noch einfacher (nach Pandas 0.16.0):
df.columns.tolist()
gibt Ihnen die Spaltennamen in einer schönen Liste.
Ich denke, dass die Frage eine zusätzliche Erklärung verdient.
Wie @fixxxer bemerkt, hängt die Antwort von der Pandas-Version ab, die Sie in Ihrem Projekt verwenden. Was Sie mit dem Befehl pd.__version__
.
Wenn du aus irgendeinem Grund wie ich (auf debian jessie verwende ich 0.14.1) ältere Version von Pandas als 0.16.0 verwendest, dann musst du verwenden:
df.keys().tolist()
weil noch keine Methode df.columns
implementiert ist.
Der Vorteil dieser Tastenmethode ist, dass sie auch in neueren Versionen von Pandas funktioniert und somit universeller ist.
Sie können die Werte als Liste abrufen, indem Sie Folgendes tun:
list(my_dataframe.columns.values)
Sie können auch einfach verwenden:
list(my_dataframe)
kann Indexattribute verwenden
df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
index=['a', 'b', 'c'])
wie Simeon Visser antwortete ... du könntest es tun
list(my_dataframe.columns.values)
oder
list(my_dataframe) # for less typing.
Aber ich denke, der beste Punkt ist:
list(my_dataframe.columns)
Es ist explizit, gleichzeitig nicht unnötig lang.
[column for column in my_dataframe]
pandas docs : Iteration über Datenrahmen gibt Spaltenbeschriftungen zurück
n = []
for i in my_dataframe.columns:
n.append(i)
print n