Mai mult
Ia lista de la panda DataFrame anteturile de coloană
Vreau pentru a obține o listă de antete de coloană dintr-un panda DataFrame. DataFrame va veni de la utilizator, astfel încât am câștigat't știu cât de multe coloane vor fi sau ce va fi numit.
De exemplu, dacă am'm a dat un DataFrame astfel:
>>> 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
Aș dori pentru a obține o listă de genul asta:
>>> header_list
['y', 'gdp', 'cap']
904
18
Puteți obține valori ca o listă de a face:
De asemenea, puteți folosi pur și simplu: (așa cum se arată în Ed Chum's a răspunde):
Există o construit în metoda care este cel mai performant:
.coloane
returnează un Index.coloane.valorile
returnează o matrice și acest lucru are o functie helper.tolist
pentru a returna o listă.Dacă performanța nu este la fel de important pentru tine, "Index" obiecte defini o
.tolist()
metoda care puteți apela direct:Diferența de performanță este evident:
Pentru cei care urăsc să tastați, puteți apela doar "lista" pe "df", astfel:
A făcut niște teste rapide, și, deloc surprinzător versiunea built-in, folosind
dataframe.coloane.valori.tolist()
este cel mai rapid:(Eu încă place foarte mult lista(dataframe)`, deși, așa multumesc EdChum!)
Sale devine și mai simplă (de panda 0.16.0) :
va dau nume de coloană într-o listă.
Pentru a lista de coloane a unei dataframe în timp ce în debugger modul de a folosi o listă de înțelegere:
Apropo, puteți obține o listă sortată pur și simplu prin utilizarea
rezolvat
:Ca's disponibil ca
my_dataframe.coloane
.L's interesante, dar
df.coloane.valori.tolist()
este de aproape 3 ori mai repede atunci `df.coloane.tolist () "" dar am crezut că sunt la fel:Surprins am't văzut acest postat până acum, așa că am'll las aici.
Extinsă Iterable Despachetarea (python3.5+):
[*df]
și PrieteniiDespachetarea generalizări (PEP 448) au fost introduse cu Python 3.5. Deci, următoarele operațiuni sunt toate posibile.
<!- >
Daca vrei o "lista"....
Sau, dacă vrei un "set",
Sau, dacă doriți un tuplu`,
Sau, dacă doriți pentru a stoca rezultatul pe undeva,
... daca're genul de persoana care convertește cafea la tastarea sunete, ei bine, acest lucru se va consuma cafeaua mai eficient ;)
Verificare Vizuală De când am'am văzut acest discutate în alte răspunsuri, puteți utiliza iterable despachetarea (nu este nevoie de explicit bucle).
Critica de Alte Metode
Don't de a folosi în mod explicit "pentru" buclă pentru o operație care se poate face într-o singură linie (List comprehensions sunt ok).
Apoi, folosind
sortate(df)
nu păstra ordinea inițială de coloane. Pentru asta, ar trebui să utilizați lista(df)` în loc.Apoi,
listă(df.coloane) " și " lista(df.coloane.valorile) sunt săraci sugestii (ca de versiunea curentă, v0.24). Ambele "Index" (revenit de la df.coloane
) și NumPy matrice (returnat dedf.coloane.valorile
) defini.tolist()
metoda care este mai rapid și mai idiomatice.În cele din urmă, listification de exemplu,
listă(df)
ar trebui să fie utilizat numai ca un concis alternativă la metodele menționate anterior.O DataFrame urmează dict-cum ar fi convenția de iterarea peste "cheile" de obiecte.
Creați o listă de chei/coloane - obiect metoda
to_list()
și pythonic modDe bază repetare pe o DataFrame se întoarce coloana etichete
Nu converti un DataFrame într-o listă, doar pentru a obține etichete de coloană. Nu te opri gândesc în timp ce caută pentru un mostre de cod.
În Notebook-uri
Pentru explorarea datelor în IPython notebook, modul meu preferat este acesta:
Care va produce un ușor de citit în ordine alfabetică lista ordonata.
Într-un depozit de cod
În codul mi se pare mai explicit de-a face
Pentru că a spune altora citit codul ceea ce faci.
%%datănu final_df.coloane.valori.tolist() 948 ns ± 19.2 ns pe buclă (spun ± std. dev. de 7 ruleaza, 1000000 bucle fiecare)
%%datănu lista(final_df.coloane) 14.2 µs ± 79.1 ns pe buclă (spun ± std. dev. de 7 ruleaza, 100000 bucle fiecare)
%%datănu lista(final_df.coloane.valori) 1.88 µs ± 11.7 ns pe buclă (spun ± std. dev. de 7 ruleaza, 1000000 bucle fiecare)
%%datănu final_df.coloane.tolist() 12.3 µs ± 27.4 ns pe buclă (spun ± std. dev. de 7 ruleaza, 100000 bucle fiecare)
%%datănu lista(final_df.cap(1).coloane) 163 µs ± 20.6 µs pe buclă (spun ± std. dev. de 7 ruleaza, 10000 bucle fiecare)
ca răspuns de către Simeon Visser...ai putea face
sau
Dar cred că cel mai dulce loc este:
Este explicită, în același timp, nu inutil de lung.
Pentru un mod rapid, elegant, control vizual, încercați acest lucru:
Acest lucru ne dă nume de coloane într-o listă:
O altă funcție numită tolist() pot fi folosite:
Mă simt întrebare merită o explicație suplimentară.
Ca @fixxxer menționat, răspunsul depinde de panda versiunea pe care o utilizați în proiectul dumneavoastră. Pe care le puteți obține cu pd.versiune` comanda.
Dacă sunteți pentru un motiv oarecare ca mine (pe debian jessie eu folosesc 0.14.1), folosind o versiune mai veche de panda decât 0.16.0, atunci ai nevoie pentru a utiliza:
df.tastele().tolist()
pentru că nu există nici odf.coloane
metoda puse în aplicare încă.Avantajul acestei chei este metoda, care funcționează chiar și în noua versiune de panda, așa că's mai universal.
Chiar dacă soluția asta a fost condiția de mai sus este frumos. De asemenea, aș aștepta la ceva de genul cadru.column_names() să fie o funcție în panda, dar din moment ce nu este, poate ar fi frumos să utilizați următoarea sintaxă. Cumva păstrează sentimentul că sunteți folosind panda într-un mod adecvat prin apelarea "tolist" funcția: cadru.coloane.tolist()
Această soluție listează toate coloanele de obiect my_dataframe: