Як показати ім'я всіх стовпців у фреймі даних pandas?


127

У мене є фрейм даних, який складається з сотні стовпців, і мені потрібно побачити всі імена стовпців.

Що я зробив:

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)

Як показати всі стовпці замість усіченого списку?

Відповіді:


194

Ви можете глобально встановити параметри друку. Я думаю, це має спрацювати:

Спосіб 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(). Жодне ім'я стовпця не буде усічено.


Якщо ви просто хочете побачити назви стовпців, ви можете зробити:

print(df.columns.tolist())

3
@EEE Ні, це відповідає на питання. Я щойно спробував, він відображає всі стовпці замість усіченого списку. Він не сказав усічене поле, він сказав список стовпців.
rjurney

3
Ага, ти маєш рацію. Я був неправий. Дякую, @rjurney. І вибачте YOLO. Я робив df.columns замість df.head ()! Чи слід видаляти неправильний попередній коментар?
EEE

Так, я так думаю.
rjurney

1
набагато краще встановити кінцеве значення, як 500, інакше це буде тривати вічно, якщо ви надрукуєте великий фрейм даних
Томас Г.

Вибачте, але як це вимкнути? Наразі моє безглузде рішення - просто закрити Anaconda і відкрити його знову. Ну, чи є законний дістатись цього, не роблячи цього?
Чень Лізі,

44

Щоб отримати всі імена стовпців DataFrame, df_dataу цьому прикладі вам просто потрібно скористатися командою 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

10

На інтерактивній консолі це легко зробити:

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_contextналаштування застосовуються лише до, displayа не до print.


Мені подобається, що withключове слово застосовує цю опцію лише до блоку нижче. Однак це добре працює з print(). Чому мені потрібно використовувати display()замість print()?
Вінсент Агамі,

@VincentAgami Використання дисплея потрібно, оскільки параметри pd.option_context застосовуються лише до відображення, а не до друку. Я оновив відповідь, включивши цю інформацію.
Ніко

3

У мене спрацювало наступне:

pd.options.display.max_seq_items = None

Ви також можете встановити для нього ціле число, яке перевищує кількість стовпців.


3

Найпростіший спосіб, який я знайшов, - просто

list(df.columns)

Особисто я не хотів би міняти глобальні дані, не так часто я хочу бачити всі назви стовпців.


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

У мене було багато повторюваних імен стовпців, і одного разу я побіг

df = df.loc[:,~df.columns.duplicated()]

Я зміг побачити повний список стовпців

Кредит: https://stackoverflow.com/a/40435354/5846417


1

Ви можете спробувати це

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

1

Не звичайна відповідь, але я думаю, ви можете транспонувати кадр даних, щоб дивитись на рядки, а не на стовпці. Я використовую це, оскільки вважаю, що перегляд рядків є більш `` інтуїтивним '', ніж розгляд стовпців:

data_all2.T

Це має дозволити вам переглянути всі рядки. Ця дія не є постійною , вона лише дозволяє переглянути перенесену версію фрейму даних.

Якщо рядки все ще усічені, просто використовуйте, print(data_all2.T)щоб переглянути все.


Не звичайна відповідь, але я думаю, ви можете транспонувати кадр даних, щоб дивитись на рядки, а не на стовпці. Вони хочуть лише назви стовпців, чи не так? Якщо рядки все ще усічені, просто використовуйте print (data_all2.T), щоб переглянути все. Як друк результату вирішить проблему? Ви все-таки його не друкуєте?
AMC

0

Це мій шлях. Я ніколи не пробую для сто колон. Але я думаю, що це працює

your_dataframe.info()

0

Я знаю, що це повторення, але я завжди закінчую вставкою та зміною відповіді YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.