Панди: Налаштування немає. максимальних рядів


138

У мене проблема з переглядом наступного DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

Проблема полягає в тому, що він не друкує всі рядки за замовчуванням у зошиті ipython, але мені доведеться нарізати фрагменти, щоб переглянути отримані рядки. Навіть наступний варіант не змінює вихід:

pd.set_option('display.max_rows', 500)

Хтось знає, як відобразити весь масив?


Коли я запускаю ваш код у зошиті за замовчуванням (тобто немає спеціального профілю конфігурації), я отримую досить друковану таблицю, яку можна прокручувати з усіма значеннями. FYI, мої панди .__ версія__ = 0.9.1 (не впевнений, чи це має значення)
BubbleGuppies

Я мав на увазі звичайну оболонку, а не іпітон
Райан Сакс

У мене таке відчуття, що це може бути помилка в 0,11 + ...
Енді Хейден

Привіт Енді. Це вже підтвердив Уес? Де я можу подати цю помилку? Чи існує рішення?
Енді

Я тільки що подав його сюди , я знаю, що відбулися зміни в останню хвилину в 0,11 до repr DataFrame, тому я переглянув їх у звіті про помилки. Повідомляю про повторне вирішення.
Енді Хайден

Відповіді:


233

Набір display.max_rows:

pd.set_option('display.max_rows', 500)

Для старих версій панд (<= 0.11.0) потрібно змінити і display.heightта, і display.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

Дивіться також pd.describe_option('display').

Ви можете встановити параметр лише тимчасово на цей раз так:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

Ви також можете скинути опцію назад до її значення за замовчуванням, як це:

pd.reset_option('display.max_rows')

І скиньте їх усіх назад:

pd.reset_option('all')


6
+1 для pd.describe_option ('показ'), я не знав усіх варіантів
nom-pon-ir

41
Висота тепер застаріла, тому опції display.max_rows достатньо.
hanleyhansen

9
Для тих, хто лише дивиться на прийняту відповідь: використовуйте, with pd.option_context('display.height', 500, 'display.max_rows', 500):щоб встановити їх лише тимчасово.
BallpointBen

Я повинен виправити чи дати найкращий спосіб досягти цього. Використовуйте "None" і не обмежуйте його 500. # Тимчасове відображення всіх рядків і стовпців з pd.option_context ("display.max_rows", None, "display.max_columns", None): display (df_facilities) Наведений вище код почне діяти лише у комірці, що містить код, тому не потрібно скидати в інші комірки.
MGB.py

35

Особисто мені подобається встановлювати параметри безпосередньо із заявою про призначення, оскільки це легко знайти через заповнення вкладки завдяки iPython. Мені важко запам'ятати, що таке точні назви варіантів, тому цей метод працює для мене.

Наприклад, все, що я повинен пам’ятати, це те, що це починається з pd.options

pd.options.<TAB>

введіть тут опис зображення

Більшість варіантів доступні під display

pd.options.display.<TAB>

введіть тут опис зображення

Звідси я зазвичай виводять те, що таке поточне значення:

pd.options.display.max_rows
60

Потім я встановив його таким, яким я хочу, щоб це було:

pd.options.display.max_rows = 100

Також слід знати про контекстний менеджер параметрів, який тимчасово встановлює параметри всередині блоку коду. Передайте ім'я опції у вигляді рядка, за яким слід значення, яке ви хочете. Ви можете передавати будь-яку кількість варіантів в одному рядку:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

Ви також можете скинути опцію назад до її значення за замовчуванням, як це:

pd.reset_option('display.max_rows')

І скиньте їх усіх назад:

pd.reset_option('all')

Все ще цілком добре встановлювати параметри через pd.set_option. Я просто знайти з допомогою атрибутів безпосередньо легше і менше потреби get_optionі set_option.


4
with pd.option_contextє найчистішим методом серед цих відповідей; найменше побічні ефекти.
ijoseph

10

На це вже вказувалося в цьому коментарі та у цій відповіді , але я спробую дати більш пряму відповідь на питання:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context доступний з пандами 0.13.1 ( примітки до випуску pandas 0.13.1 ). Відповідно до цього ,

[це] дозволяє [s] вам виконати блок-код з набором параметрів, які повертаються до попередніх налаштувань при виході з блоку.


9

Як зазначає @hanleyhansen у коментарі, станом на версію 0.18.1 display.heightопція застаріла і говорить "використовувати display.max_rowsзамість цього". Отже, ви просто повинні налаштувати його так:

pd.set_option('display.max_rows', 500)

Дивіться примітки до випуску - документацію панд 0.18.1 :

Застарілий display.wight, display.width тепер лише опція форматування не контролює запуск підсумків, аналогічно <0,11.0.


7
pd.set_option('display.max_rows', 500)
df

Не працює в Юпітері!
Замість цього використовуйте:

pd.set_option('display.max_rows', 500)
df.head(500)

3

Як і в цій відповіді на подібне запитання , не потрібно зламати налаштування. Написати набагато простіше:

print(foo.to_string())

1
Ви не повинні перетворювати його в рядок. Енді не просив цього.
симтім

1
@simtim Енді запитав, як "відобразити весь масив". Це зробить це і набагато простіше, ніж прийнята відповідь.
Ninjakannon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.