Zaskoczony, jak dotąd nie widziałem tego, więc zostawię to tutaj.
Extended Iterable Unpacking (python3.5 +): [*df]
and Friends
Rozpakowywanie uogólnień (PEP 448) zostało wprowadzone w Pythonie 3.5. Zatem wszystkie poniższe operacje są możliwe.
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
Jeśli chcesz list
....
[*df]
# ['A', 'B', 'C']
Lub, jeśli chcesz set
,
{*df}
# {'A', 'B', 'C'}
Lub, jeśli chcesz tuple
,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
Lub, jeśli chcesz gdzieś zapisać wynik,
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
... jeśli jesteś typem osoby, która zamienia kawę na dźwięki pisania, cóż, dzięki temu będziesz spożywać kawę bardziej efektywnie;)
PS: jeśli wydajność jest ważna, warto porzucić powyższe rozwiązania na korzyść
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
Jest to podobne do odpowiedzi Eda Chuma, ale zaktualizowane do wersji v0.24, w której .to_numpy()
preferowane jest użycie .values
. Zobacz
tę odpowiedź (przeze mnie), aby uzyskać więcej informacji.
Kontrola wizualna
Ponieważ widziałem to omówione w innych odpowiedziach, możesz użyć iterowalnego rozpakowywania (nie ma potrzeby jawnych pętli).
print(*df)
A B C
print(*df, sep='\n')
A
B
C
Krytyka innych metod
Nie używaj wyraźnej for
pętli dla operacji, które można wykonać w jednym wierszu (rozumienie listy jest w porządku).
Następnie użycie sorted(df)
nie zachowuje oryginalnej kolejności kolumn. W tym celu należy użyć list(df)
zamiast tego.
Dalej, list(df.columns)
i list(df.columns.values)
są kiepskie sugestie (od bieżącej wersji, v0.24). Zarówno Index
(zwrócone z df.columns
), jak i NumPy (zwrócone przez df.columns.values
) definiują .tolist()
metodę, która jest szybsza i bardziej idiomatyczna.
Wreszcie, listifikacja, tj. list(df)
Powinna być używana jedynie jako zwięzła alternatywa dla wyżej wymienionych metod dla Pythona <= 3.4, gdzie rozszerzone rozpakowywanie nie jest dostępne.
columns
jako atrybutu?