PyCharm: как отобразить все столбцы фрейма данных в окне «Выполнить» без переноса или усечения?

Проблема, с которой я сталкиваюсь, связана с тем, как я могу заставить окно «Выполнить» отображать все столбцы данного фрейма данных pandas, не подгоняя его под размер окна (что происходит для меня либо путем усечения имен столбцов, либо не отображая все столбцы).

Другими словами, мне нужно, чтобы данные отображались в соответствующих строках, и, если вид окна слишком мал для отображения всех столбцов, должна появиться горизонтальная полоса (как обычно), чтобы я мог легко перемещаться по данным.

Предыстория: я обработал некоторые данные, автоматически выбирая и сохраняя различные части данных в определенных файлах ".h5" в формате таблицы. Это делается с помощью фреймов данных pandas и функции to_hdf. Затем я читаю его и получаю следующее: просмотреть в окне вывода

Набор данных состоит из 35 столбцов (исключая столбец «Время») с количеством записей x в каждом из них. Для этого поста они были названы произвольно, чтобы проиллюстрировать проблему.

Обратите внимание, что:

  • Soft-wrap отключен в File -> Settings -> Editor -> General разделе «Soft Wraps».
  • Я только что выполнил новую установку как Python 3.7, так и PyCharm Community Edition 2018.3.5 (изначально была проблема с версией 2019.1), с некоторыми импортированными настройками PyCharm из файла экспорта из PyCharm на моем компьютере дома.
  • Горизонтальная полоса прокрутки кажется отключенной. Нигде не появляется. Что странно, поскольку мой домашний компьютер дает мне горизонтальную полосу прокрутки
  • Поскольку вывод в окне «Выполнить» переносится и обрезается в соответствии с размером окна до запуска сценария (т. е. меньшее или полноэкранное окно), горизонтальная полоса прокрутки, скорее всего, снова активируется после удаления других эффектов.

Я хочу добиться трех целей:

  1. Показать все столбцы фрейма данных, позволяя мне прокручивать их с помощью горизонтальной полосы прокрутки (на данный момент кажется отключенной), что подразумевает:
  2. Без переноса имен столбцов, см. метки (1) и (2) на изображении выше. И никакого усечения/удаления столбцов из-за ограничения размера окна «Выполнить», см. метку (3) на том же изображении.
  3. Незначительная задача: в настоящее время столбец «Время» (который установлен как индекс строки) печатает только дату в этой распечатке, а также сохраняются часы, минуты и секунды. Надеюсь, это будет автоматически исправлено после исправления 1. и 2. (мои другие таблицы показывают полную дату + часы и т. д. без проблем).

Это то, что я пробовал

Я использовал следующие две строки, чтобы несколько улучшить распечатку:

pd.set_option('display.max_columns', 20)
pd.set_option('display.width', 2000)

Это дает аккуратный вывод, см. ниже: это

Однако показаны не все из 35 столбцов, см. метку (1)/символ «…». Метки. Когда я увеличиваю разрешенное количество столбцов с 20 до 40, pd.set_option('display.max_columns', 40), происходит следующее: случается

Кажется, мы вернулись к исходной точке. К счастью, один из негативных эффектов ушел, а именно эффект усечения, т.е. что я думаю об удалении показанных столбцов.

Тем не менее, перенос столбцов по-прежнему происходит, так что теперь количество строк в два раза больше, в то время как должна быть возможность отображать все в своих собственных строках, автоматически отображая горизонтальную полосу, позволяющую пользователю перемещаться по этим данным.

Я также просмотрел эту ссылку, чтобы узнать больше о вариантах. с методами set_option панд. Я нашел и попробовал эту строку, pd.set_option('expand_frame_repr', True), в дополнение к другим линиям, которые я использовал. Но в моем случае это ничего не изменило.

Есть идеи?


person Fhyarnir    schedule 06.04.2019    source источник
comment
Для всех нас, у кого нет PyCharm, это в основном вопрос о PyCharm или он более общий? (Я ищу общий ответ, а не PyCharm). Кроме того, не могли бы вы либо принять ответ, если он адекватно вам ответил, либо опубликовать свой собственный ответ?   -  person smci    schedule 22.05.2019
comment
Насколько мне известно, это в основном проблема PyCharm. Я не уверен, относится ли это к другому программному обеспечению, использующему фреймы данных. В то время я просто избежал этой проблемы, сосредоточившись на выбранном количестве столбцов, вместо того, чтобы пытаться просматривать их все одновременно. Следовательно, нет правильного решения, которое я вижу.   -  person Fhyarnir    schedule 23.08.2019


Ответы (3)


допустим, вы хотите напечатать X, который имеет 15 строк.

Простая команда, которая сработала для меня:

print(X.to_string())

person Charles    schedule 23.07.2020

Я создаю конечную переменную в конце своей программы, скажем что-то вроде .... end = 'end'

Затем я ставлю там точку останова отладки и запускаю программу в режиме отладки. Он остановится в конце, и вы можете открыть фрейм данных в режиме отладки, и вуаля... вы можете перемещаться по всему фрейму данных с цветовым кодированием не меньше и другими параметрами, доступными в режиме отладки.

person run-out    schedule 14.04.2019
comment
Спасибо, я попробую! Это не самое удобное, но спасибо за усилия. - person Fhyarnir; 24.04.2019

Итак, после долгих исследований я нашел 2 способа получить заголовки столбцов в моей базе данных, которая до сих пор была для этой работы (2152 строки, 119 столбцов).

Первый способ, который заключается в том, чтобы вызвать их в список, который идет полностью горизонтально. Мой кадр данных = df

print(df.columns.tolist())

Второй способ заключался в том, чтобы отображать не только всю базу данных в pycharms или где бы то ни было. Это полностью уберет усечения, но мне пришлось использовать два типа максимальных строк столбцов, что странно. Никак иначе, само собой сработало для меня.

pd.options.display.width= None
pd.options.display.max_columns= None
pd.set_option('display.max_rows', 3000)
pd.set_option('display.max_columns', 3000)

Then just print your dataframe 
print(df)

С этими 4 строками кода я могу открыть любую базу данных менее 3000 столбцов/строк и увидеть все. Очень доволен этим, но немного сбит с толку, почему никто, pd.options или pd.set_option, не работает сам по себе.

Любой, кто счастлив кодировать.

person JQTs    schedule 18.05.2021