Wie rufe ich die Anzahl der Spalten in einem Pandas-Datenrahmen ab?

184

Wie ruft man programmgesteuert die Anzahl der Spalten in einem Pandas-Datenrahmen ab? Ich hatte auf so etwas gehofft wie:

df.num_columns
user1802143
quelle

Antworten:

304

Wie so:

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

len(df.columns)
3
John
quelle
35
Plus df.shapegibt ein Tupel mit (n_rows, n_columns)
mkln
3
@mkln Wenn du df.shape [1] als Antwort postest, würde ich +1. Dies ist der bessere Weg, um mit Numpy zu arbeiten, und verdient eine separate Antwort.
Phil Cooper
getan. @PhilCooper vielleicht könntest du erklären warum df.shapees besser ist? Ich vermute, dass es keine Funktion aufruft, sondern nur das Attribut aus dem Speicher liest.
mkln
112

Alternative:

df.shape[1]

( df.shape[0]ist die Anzahl der Zeilen)

mkln
quelle
2
+1, weil ich die Adressierung von Numpy- und Pandas-Objekten mit Martix-Syntax fördern möchte. (df.shape vs len (df.columns)). Um ehrlich zu sein, wenn Sie sich den Pandas-Deskriptor für die Form ansehen, nennt er len (df.columns), aber numpy Arrays und Matricies haben sie als Attribut. Die effizientesten vektorisierten Operationen können mit regulären Python-Syntas im Gegensatz zu vektorisierten Operationen ausgeführt werden und sind fast immer falsch (numba / jit-Operationen mit Ausnahme dieser Kritik)
Phil Cooper,
26

Wenn die Variable, die den Datenrahmen enthält, df heißt, dann:

len(df.columns)

gibt die Anzahl der Spalten an.

Und für diejenigen, die die Anzahl der Zeilen wollen:

len(df.index)

Für ein Tupel, das die Anzahl der Zeilen und Spalten enthält:

df.shape
multigoodverse
quelle
3
Würden Sie nicht len(df)die Zeilen geben?
Padraic Cunningham
4
@PadraicCunningham Pandas hat so viele Verknüpfungen, die leicht zu vergessen sind, dass ich sie lieber ignoriere und stattdessen die Hauptlogik verwende, um Dinge zu lösen. Sie können manchmal die Verarbeitungsgeschwindigkeit opfern, aber ich schätze meine Codierungszeit und Codelesbarkeit mehr als ein paar Sekunden Verarbeitungszeit. In diesem speziellen Fall: Wenn Sie erfahren, dass die Anzahl der Zeilen mit len ​​(df.index) berechnet werden kann, ist es natürlich, wenn Sie das nächste Mal die Anzahl der Spalten benötigen, len (df.columns) auszuführen.
Multigoodverse
0

Das hat bei mir funktioniert len ​​(Liste (df)).

Tanmay Ghanekar
quelle
Aus der Rezension: Hallo, dieser Beitrag scheint keine qualitativ hochwertige Antwort auf die Frage zu geben. Bitte bearbeiten Sie Ihre Antwort und verbessern Sie sie oder posten Sie sie einfach als Kommentar.
sɐunıɔ ןɐ qɐp
Tu das nicht. Es wird eine neue Liste erstellt, die Speicher und Geschwindigkeit verschwendet.
jmmcd
0

Mit der Funktion df.info () erhalten Sie ein Ergebnis wie das folgende. Wenn Sie die read_csv-Methode von Pandas ohne sep-Parameter oder sep mit "," verwenden.

raw_data = pd.read_csv("a1:\aa2/aaa3/data.csv")
raw_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5144 entries, 0 to 5143
Columns: 145 entries, R_fighter to R_age
AshishSingh007
quelle
0

Es gibt mehrere Optionen, um Spaltennummer und Spalteninformationen abzurufen, z. B.:
Überprüfen wir sie.

local_df = pd.DataFrame (np.random.randint (1,12, Größe = (2,6)), Spalten = ['a', 'b', 'c', 'd', 'e', ​​'f ']) 1. local_df.shape [1] -> Formattribut-Rückgabetupel als (Zeile & Spalten) (0,1).

  1. local_df.info () -> info Die Methode gibt detaillierte Informationen zum Datenrahmen und seinen Spalten zurück, z. B. Spaltenanzahl, Datentyp der Spalten, Anzahl der Nicht-Nullwerte, Speichernutzung durch den Datenrahmen

  2. len (local_df.columns) -> Das Spaltenattribut gibt das Indexobjekt der Datenrahmenspalten zurück und die len-Funktion gibt die insgesamt verfügbaren Spalten zurück.

  3. local_df.head (0) -> head-Methode mit Parameter 0 gibt die erste Zeile von df zurück, die eigentlich nichts als Header ist.

Angenommen, die Anzahl der Spalten beträgt nicht mehr als 10. Für Schleifenspaß: li_count = 0 für x in local_df: li_count = li_count + 1 print (li_count)

AshishSingh007
quelle