パンダのデータフレームにすべての列名を表示するにはどうすればよいですか?


114

何百もの列で構成されるデータフレームがあり、すべての列名を確認する必要があります。

私がしたこと:

In[37]:
data_all2.columns

出力は次のとおりです。

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

切り捨てられたリストではなく、すべての列を表示するにはどうすればよいですか?

回答:


173

印刷オプションをグローバルに設定できます。これはうまくいくと思います:

方法1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

方法2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

これにより、実行中にすべての列名と行を表示できます.head()。列名は切り捨てられません。

列名だけを表示したい場合は、次のようにします。 cols = df.columns.tolist()


2
これらのパンダの表示オプションを変更しても問題は解決されません。これらの設定では、data_all2.columnsは出力の切り捨てを停止しません。質問asker @ Nabih-Bawazirは、これを回答から選択解除することをお勧めします。
EEE

3
@EEEいいえ、質問に答えます。私はそれを試してみました、それは切り捨てられたリストの代わりにすべての列を表示します。彼は切り捨てられたフィールドについては言っていません、と彼はコラムリストを言った。
rjurney

3
ああ、あなたは正しい。私は間違っていた。ありがとう、@ rjurney。ごめんなさいYOLO。私はdf.head()の代わりにdf.columnsをしていました!間違った以前のコメントを削除する必要がありますか?
EEE

うん、私もそう思う。
rjurney

500のような有限値を設定する方がはるかに良いです。そうしないと、大きなデータフレームを印刷する場合、実行に永久に時間がかかります
Thomas G.

42

df_dataこの例では、DataFrameのすべての列名を取得するには、コマンドを使用するだけですdf_data.columns.values。これにより、データフレームのすべての列名のリストが表示されます

コード:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

出力:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

これがこの質問に対する本当の答えです。ありがとう@ pink.slash
Interlooper

列番号も確認したい場合、それは可能ですか?私のdfには200列ありますが、それらの一部を使用したいので、各列名を記述する代わりに数字を使用できると考えていました。
Mactilda

9

インタラクティブコンソールでは、次の操作を行うのは簡単です。

data_all2.columns.tolist()

またはこれをスクリプト内で:

print(data_all2.columns.tolist())

6

これでうまくいきます。display()印刷の代わりにを使用していることに注意してください。

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

編集:

設定はにのみ適用され、適用されないdisplayため、の使用が必要です。pd.option_contextdisplayprint


with以下のブロックにのみオプションを適用するキーワードが好きです。ただし、でうまく機能しprint()ます。display()代わりにを使用する必要があるのはなぜprint()ですか?
Vincent Agami

@VincentAgami pd.option_context設定はディスプレイにのみ適用され、印刷には適用されないため、ディスプレイの使用が必要です。この情報を含めるように回答を更新しました。
nico

3

私にとってうまくいったことは次のとおりでした:

pd.options.display.max_seq_items = None

列数よりも大きい整数に設定することもできます。


2

すべての列名を取得するには、を反復処理できますdata_all2.columns

columns = data_all2.columns
for col in columns:
    print col

すべての列名を取得します。または、すべての列名を別のリスト変数に保存してからリストを印刷することもできます。


1

すべての列を表示したいだけの場合は、この種のことをクイックフィックスとして実行できます

cols = data_all2.columns

colsは、インデックスを付けることができる反復変数として動作します。例えば

cols[11:20]

1

すばやく汚い解決策は、文字列に変換することです

print('\t'.join(data_all2.columns))

それらのすべてがタブで区切られて印刷されることになりますもちろん、102個の名前があると、それらすべてがかなり長くなり、読みにくくなることに注意してください。



1

あなたはこれを試すことができます

pd.pandas.set_option('display.max_columns', None)

1

従来の答えではありませんが、データフレームを転置して、列ではなく行を見ることができると思います。これは、列を見るよりも行を見るほうが「直感的」であるためです。

data_all2.T

これにより、すべての行が表示されます。このアクションは永続的なものはなく、データフレームの転置バージョンを表示できるようにするだけです。

それでも行が切り捨てられる場合は、を使用print(data_all2.T)してすべてを表示します。


従来の答えではありませんが、データフレームを転置して、列ではなく行を見ることができると思います。彼らが望んでいるのは列名だけです。それでも行が切り捨てられる場合は、print(data_all2.T)を使用してすべてを表示します。結果を印刷して問題をどのように解決しますか?とにかく、まだ印刷していませんか?
AMC

1

私が見つけた最も簡単な方法はただです

list(df.columns)

個人的にはグローバルを変更したくないのですが、多くの場合、すべての列名を確認する必要はありません。


0

これが私のやり方です。何百列も試したことがありません。しかし、私はそれがうまくいくと思います

your_dataframe.info()

0

私はそれが繰り返しであることを知っていますが、私は常にコピーして貼り付け、YOLOの答えを変更することになります:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.