Панды: Настройка №. из макс строк


138

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

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

Проблема заключается в том, что он не печатает все строки по умолчанию в записной книжке ipython, но мне нужно нарезать, чтобы просмотреть результирующие строки. Даже следующая опция не меняет вывод:

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

Кто-нибудь знает, как отобразить весь массив?


Когда я запускаю ваш код в блокноте по умолчанию (т.е. без специального профиля конфигурации), я получаю довольно печатную таблицу, которая прокручивается всеми значениями. К вашему сведению, мои панды .__ version__ = 0.9.1 (не уверен, имеет ли это значение)
BubbleGuppies

Я имел в виду обычную оболочку, а не ipython
Райан Сакс

У меня есть ощущение, что это может быть ошибка в 0.11 + ...
Энди Хейден

Привет Энди. Это уже подтверждено Уэсом? Где я могу отправить эту ошибку? Есть ли обходной путь?
Энди

Я только что подал это здесь , я знаю, что были некоторые последние изменения в 0.11 в репозитории 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 ('display'), я не знал всех вариантов
nom-mon-ir

41
Высота теперь устарела, поэтому достаточно опции display.max_rows.
Ханлейхансен

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самый чистый метод среди этих ответов; Наименьшие побочные эффекты.
Иосиф

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 доступен начиная с pandas 0.13.1 ( примечания к выпуску pandas 0.13.1 ). Согласно этому ,

[it] позволяет [s] выполнять кодовый блок с набором параметров, которые возвращаются к предыдущим настройкам при выходе из блока with.


9

Как отметил @hanleyhansen в комментарии, начиная с версии 0.18.1, эта display.heightопция устарела и говорит «используйте display.max_rowsвместо». Так что вам просто нужно настроить это так:

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

См. Примечания к выпуску - документация pandas 0.18.1 :

Устаревший display.height, display.width теперь является только опцией форматирования, не контролирующей запуск сводки, аналогично <0.11.0.


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

Не работает в Jupyter!
Вместо этого используйте:

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

3

Как и в этом ответе на аналогичный вопрос , нет необходимости взламывать настройки. Гораздо проще написать:

print(foo.to_string())

1
Вы не должны конвертировать его в строку. Это не то, что просил Энди.
Simtim

1
@simtim Энди спросил, как «отобразить весь массив». Это сделает это и будет намного проще, чем принятый ответ.
Ниндзяканнон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.