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






dataframe