Pandas dataframe показывает только внешние столбцы при печати данных в консоли - PullRequest
0 голосов
/ 12 марта 2019

Относительно новичок в Python и Pandas, но я пережил много переполнения стека и Google, и не смог найти ничего, что решало бы ту же проблему, с которой я столкнулся.(Возможно, я просто использую неправильные ключевые слова, но я надеюсь, что кто-то здесь может указать мне правильное направление)

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

Это происходит, когда я:

  • вызов команды печати в консоли
  • вызов печати из сценария
  • использование print(df[0:5])
  • использование df.head()

Если я только печатаю df[0:1], то отображает средние столбцы.(Я звоню, если df в моем сообщении, но я назвал это channeldf в своем коде)

Примеры:

channeldf.head()
Out[90]: 
           IDs        ...                       y2
0  "1170910_1"        ...               413915.163
1  "1170910_2"        ...         413916.485731237
2  "1170910_3"        ...         413914.945323079
3  "1170910_4"        ...         413904.985148227
4  "1170910_5"        ...         413897.477030875
[5 rows x 5 columns]

channeldf[0:5]
Out[92]: 
           IDs        ...                       y2
0  "1170910_1"        ...               413915.163
1  "1170910_2"        ...         413916.485731237
2  "1170910_3"        ...         413914.945323079
3  "1170910_4"        ...         413904.985148227
4  "1170910_5"        ...         413897.477030875
[5 rows x 5 columns]

channeldf[0:1]
Out[91]: 
           IDs          x1         y1          x2          y2
0  "1170910_1"  144923.193  413914.78  144919.756  413915.163

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

pd.set_option('display.width',100)
print(channeldf.iloc[1:2,:])
           IDs          x1        ...                       x2                y2
1  "1170910_2"  144919.756        ...         144915.931907037  413916.485731237
[1 rows x 5 columns]
print(channeldf.iloc[0:1,:])
           IDs          x1         y1          x2          y2
0  "1170910_1"  144923.193  413914.78  144919.756  413915.163
print(channeldf.iloc[1:3,:])
           IDs        ...                       y2
1  "1170910_2"        ...         413916.485731237
2  "1170910_3"        ...         413914.945323079
[2 rows x 5 columns]
pd.set_option('display.width',1000)
print(channeldf.iloc[1:2,:])
           IDs          x1        ...                       x2                y2
1  "1170910_2"  144919.756        ...         144915.931907037  413916.485731237
[1 rows x 5 columns]
print(channeldf.iloc[1:3,:])
           IDs        ...                       y2
1  "1170910_2"        ...         413916.485731237
2  "1170910_3"        ...         413914.945323079

Мой экран намного шире, чем этот;даже самый широкий вывод в моем примере составляет всего 60% доступной ширины.У меня проблемы с поиском хорошего фрагмента данных, но столбцы - это идентификаторы: x1, y1, x2, y2, а последние 4 содержат координаты с почти постоянным количеством цифр.Первая строка имеет 2 или 3 цифры, а все остальные строки имеют 9 цифр.

Я надеюсь, что кто-то может дать решение или указать мне правильное направление.Если есть что-то, что я могу прояснить;Я с удовольствием сделаю это (но, пожалуйста, дайте мне несколько инструкций, как туда добраться)

1 Ответ

0 голосов
/ 13 марта 2019

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

Хороший воспроизводимый пример этого явления - интерпретатор Python (Jupyter и другие среды могут сделать для вас дополнительные вещи):

import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice', 'Doug'],'education':['hs diploma', 'advanced degree', 'four year degree', 'middle school'], 'income': [40000, 50000, 42000,20000]})

Посмотрите на DataFrame

df
          education  income   user
0        hs diploma   40000    Bob
1   advanced degree   50000   Jane
2  four year degree   42000  Alice
3     middle school   20000   Doug

Отображать только два внешних столбца

pd.set_option("display.max_columns", 2)
df
          education  ...     user
0        hs diploma  ...      Bob
1   advanced degree  ...     Jane
2  four year degree  ...    Alice
3     middle school  ...     Doug

[4 rows x 3 columns]

Обратите внимание на выходные размеры df: 3 столбца, а средний свернут.

pd.set_option("display.max_columns", 0)

Удивительно печатает все, как и лучшее значение None.

Вывод вашего DataFrame в CSV и загрузка с помощью редактора электронных таблиц иногда является хорошим способом представления ваших результирующих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...