Come recuperare il numero di colonne in un frame di dati Pandas?


184

Come recuperare a livello di codice il numero di colonne in un frame di dati Panda? Speravo in qualcosa del tipo:

df.num_columns

Risposte:


305

Così:

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.shapedà una tupla con (n_rows, n_columns)
mkln

3
@mkln se pubblichi df.shape [1] come risposta, farei +1. Questo è il modo migliore di lavorare con intorpidimento e merita di essere una risposta separata.
Phil Cooper,

fatto. @PhilCooper forse potresti spiegare perché df.shapeè meglio? la mia ipotesi è che non chiama una funzione ma legge solo l'attributo dalla memoria?
mkln

113

Alternativa:

df.shape[1]

( df.shape[0]è il numero di righe)


2
+1 perché mi piace incoraggiare l'indirizzamento di oggetti numpy e panda con sintassi di tipo martix. (df.shape vs len (df.columns)). A dire il vero, se guardi il descrittore dei panda per forma, chiama len (df.columns) ma matrici e matrici intorpidite li hanno come attributo. operazioni vettorializzate più efficienti possono essere eseguite con sintassi pitone regolari anziché operazioni vettorializzate ed è quasi sempre sbagliato (operazioni numba / jit escluse da tale critica)
Phil Cooper,

26

Se la variabile che contiene il dataframe si chiama df, allora:

len(df.columns)

indica il numero di colonne.

E per chi desidera il numero di righe:

len(df.index)

Per una tupla contenente il numero di righe e colonne:

df.shape

3
Non ti len(df)darebbe le file?
Padraic Cunningham,

4
I panda di @PadraicCunningham hanno così tante scorciatoie che sono facili da dimenticare, quindi preferisco ignorarle e usare invece la logica principale per risolvere le cose. A volte potresti sacrificare la velocità di elaborazione, ma apprezzo il mio tempo di codifica e la leggibilità del codice più di qualche secondo di tempo di elaborazione. In questo caso particolare: se impari che il numero di righe può essere calcolato con len (df.index), la prossima volta che hai bisogno del numero di colonne diventa naturale fare len (df.columns).
multigoodverse,


0

La funzione df.info () ti darà risultati simili a quelli indicati di seguito. Se si utilizza il metodo read_csv di Panda senza parametro sep o sep con ",".

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

Ci sono più opzioni per ottenere il numero di colonna e le informazioni sulla colonna come:
controlliamo.

local_df = pd.DataFrame (np.random.randint (1,12, size = (2,6)), colonne = ['a', 'b', 'c', 'd', 'e', ​​'f ']) 1. local_df.shape [1] -> Attributo forma restituisce tupla come (riga e colonne) (0,1).

  1. local_df.info () -> Il metodo info restituirà informazioni dettagliate sul frame di dati e le sue colonne come conteggio delle colonne, tipo di dati delle colonne, conteggio del valore non nullo, utilizzo della memoria da parte del frame di dati

  2. len (local_df.columns) -> l'attributo colonne restituirà l'oggetto indice delle colonne del frame di dati e la funzione len restituirà il totale delle colonne disponibili.

  3. local_df.head (0) -> Il metodo head con il parametro 0 restituirà la prima riga di df che in realtà non è altro che intestazione.

Supponendo che il numero di colonne non sia superiore a 10. Per divertimento in loop: li_count = 0 per x in local_df: li_count = li_count + 1 stampa (li_count)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.