Wie werden alle Spaltennamen im Pandas-Datenrahmen angezeigt?


110

Ich habe einen Datenrahmen, der aus Hunderten von Spalten besteht, und ich muss alle Spaltennamen sehen.

Was ich getan habe:

In[37]:
data_all2.columns

Die Ausgabe ist:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

Wie zeige ich alle Spalten anstelle einer abgeschnittenen Liste an?

Antworten:


164

Sie können Druckoptionen global festlegen. Ich denke das sollte funktionieren:

Methode 1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Methode 2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

Auf diese Weise können Sie alle Spaltennamen und Zeilen anzeigen, wenn Sie dies tun .head(). Keiner der Spaltennamen wird abgeschnitten.

Wenn Sie nur die Spaltennamen anzeigen möchten, haben Sie folgende Möglichkeiten: cols = df.columns.tolist()


2
Das Ändern dieser Pandas-Anzeigeoptionen beantwortet die Frage NICHT. Diese Einstellungen führen dann nicht dazu, dass data_all2.columns die Ausgabe nicht mehr abschneidet. Ich schlage vor, dass der Fragesteller @ Nabih-Bawazir dies als Antwort abwählt.
EEE

3
@EEE Nein, es beantwortet die Frage. Ich habe es gerade versucht, es zeigt alle Spalten anstelle einer abgeschnittenen Liste. Er sagte nicht abgeschnittenes Feld, er sagte Spaltenliste.
rjurney

3
Ahh, du hast recht. Ich lag falsch. Danke, @rjurney. Und sorry YOLO. Ich habe df.columns anstelle von df.head () gemacht! Sollte ich meinen falschen früheren Kommentar löschen?
EEE

Ja ich glaube schon.
rjurney

Es ist viel besser, einen endlichen Wert wie 500 festzulegen, da die Ausführung sonst ewig dauert, wenn Sie einen großen Datenrahmen drucken
Thomas G.

42

In df_datadiesem Beispiel müssen Sie nur den Befehl verwenden, um alle Spaltennamen eines DataFrame abzurufen df_data.columns.values. Dies zeigt Ihnen eine Liste mit allen Spaltennamen Ihres Datenrahmens

Code:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

Ausgabe:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

Dies ist die wahre Antwort auf diese Frage, danke @ pink.slash
Interlooper

Wenn ich auch die Spaltennummern sehen möchte - ist das möglich? Mein df hat 200 Spalten und ich würde gerne einen Bruchteil davon verwenden und dachte, ich könnte die Zahlen verwenden, anstatt jeden Spaltennamen zu schreiben.
Mactilda

9

In der interaktiven Konsole ist dies ganz einfach:

data_all2.columns.tolist()

Oder dies innerhalb eines Skripts:

print(data_all2.columns.tolist())

6

Dies wird den Trick machen. Beachten Sie die Verwendung von display()anstelle von Drucken.

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

BEARBEITEN:

Die Verwendung von displayist erforderlich, da die pd.option_contextEinstellungen nur für displayund nicht für gelten print.


Ich möchte, dass das withSchlüsselwort die Option nur auf den folgenden Block anwendet. Es funktioniert jedoch gut mit print(). Warum sollte ich display()stattdessen verwenden müssen print()?
Vincent Agami

@VincentAgami Die Verwendung der Anzeige ist erforderlich, da die Einstellungen für pd.option_context nur für die Anzeige und nicht für den Druck gelten. Ich habe die Antwort aktualisiert, um diese Informationen aufzunehmen.
Nico

3

Was für mich funktioniert hat, war Folgendes:

pd.options.display.max_seq_items = None

Sie können auch eine Ganzzahl festlegen, die größer als Ihre Spaltenanzahl ist.


2

Um alle Spaltennamen zu erhalten, können Sie über die iterieren data_all2.columns.

columns = data_all2.columns
for col in columns:
    print col

Sie erhalten alle Spaltennamen. Oder Sie können alle Spaltennamen in einer anderen Listenvariablen speichern und dann die Liste drucken.


1

Wenn Sie nur alle Spalten anzeigen möchten, können Sie eine solche Lösung als schnelle Lösung verwenden

cols = data_all2.columns

Jetzt verhält sich cols wie eine iterative Variable, die indiziert werden kann. beispielsweise

cols[11:20]

1

Eine schnelle und schmutzige Lösung wäre, es in einen String umzuwandeln

print('\t'.join(data_all2.columns))

Dies würde dazu führen, dass alle durch Tabulatoren getrennt ausgedruckt werden. Beachten Sie natürlich, dass bei 102 Namen, die alle ziemlich lang sind, dies etwas schwer zu lesen ist



1

Sie können dies versuchen

pd.pandas.set_option('display.max_columns', None)

1

Keine konventionelle Antwort, aber ich denke, Sie könnten den Datenrahmen transponieren, um die Zeilen anstelle der Spalten zu betrachten. Ich benutze dies, weil ich das Betrachten von Zeilen "intuitiver" finde als das Betrachten von Spalten:

data_all2.T

Auf diese Weise sollten Sie alle Zeilen anzeigen können. Diese Aktion ist nicht permanent , sondern ermöglicht nur das Anzeigen der transponierten Version des Datenrahmens.

Wenn die Zeilen immer noch abgeschnitten sind, verwenden Sie einfach print(data_all2.T), um alles anzuzeigen.


Keine konventionelle Antwort, aber ich denke, Sie könnten den Datenrahmen transponieren, um die Zeilen anstelle der Spalten zu betrachten. Sie wollen nur die Spaltennamen, nein? Wenn die Zeilen immer noch abgeschnitten sind, verwenden Sie einfach print (data_all2.T), um alles anzuzeigen. Wie würde das Drucken des Ergebnisses das Problem lösen? Drucken Sie es nicht schon?
AMC

1

Der einfachste Weg, den ich gefunden habe, ist einfach

list(df.columns)

Persönlich möchte ich die Globals nicht ändern, es ist nicht so oft, dass ich alle Spaltennamen sehen möchte.


0

Das ist mein Weg. Ich versuche nie für hundert Spalten. Aber ich denke es funktioniert

your_dataframe.info()

0

Ich weiß, dass es eine Wiederholung ist, aber am Ende kopiere ich immer die Antwort von YOLO und ändere sie:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.