これまでのところこれを見たことがないことに驚いたので、ここに残しておきます。
拡張イテラブルアンパッキング(python3.5 +):[*df]
とフレンド
展開の一般化(PEP 448)がPython 3.5で導入されました。したがって、以下の操作はすべて可能です。
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
あなたが欲しいならlist
...
[*df]
# ['A', 'B', 'C']
または、必要に応じてset
、
{*df}
# {'A', 'B', 'C'}
または、必要に応じてtuple
、
*df, # Please note the trailing comma
# ('A', 'B', 'C')
または、結果をどこかに保存したい場合は、
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
...あなたがコーヒーをタイピング音に変換するような人なら、まあ、これはあなたのコーヒーをより効率的に消費するでしょう;)
PS:パフォーマンスが重要な場合は、上記のソリューションを廃止して、
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
これはEd Chumの回答に似て.to_numpy()
いますが、の使用が推奨されるv0.24用に更新されています.values
。詳細については、(私が)この回答を参照
してください。
ビジュアルチェック
これは他の回答で説明されているので、反復可能なアンパッキングを利用できます(明示的なループは必要ありません)。
print(*df)
A B C
print(*df, sep='\n')
A
B
C
他の方法の批評
for
1行で実行できる操作に明示的なループを使用しないでください(リスト内包表記は問題ありません)。
次に、を使用sorted(df)
しても、列の元の順序は保持されません。そのためには、list(df)
代わりに使用する必要があります。
次に、list(df.columns)
およびlist(df.columns.values)
(現在のバージョン、v0.24のような)が悪いの提案です。Index
(から返されるdf.columns
)とNumPy配列(によって返されるdf.columns.values
)の両方.tolist()
が、より高速で慣用的なメソッドを定義しています。
最後に、リスト化、つまり拡張アンパッキングlist(df)
が利用できないpython <= 3.4の前述のメソッドの簡潔な代替手段としてのみ使用する必要があります。
columns
属性がないのはなぜですか?