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

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

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)


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

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)).


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

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)

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.