Подтвердить что ты не робот

Полностью вывести очень длинную строку в панде

Я борюсь с, казалось бы, очень простой вещью. У меня есть фрейм данных панд, содержащий очень длинную строку.

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

Теперь, когда я пытаюсь напечатать то же самое, я не вижу полную строку, я скорее вижу только часть строки.

Я пробовал следующие варианты

  • используя print(df.iloc[2])
  • используя to_html
  • используя to_string
  • В одном из ответов на stackoverflow было предложено увеличить ширину столбца с помощью параметра отображения pandas, который тоже не работал.
  • Я также не set_printoptions как set_printoptions поможет мне.

Любые идеи приветствуются. Выглядит очень просто, но не в состоянии получить это!

4b9b3361

Ответ 1

Вы можете использовать options.display.max_colwidth, чтобы указать, что вы хотите увидеть больше в представлении по умолчанию:

In [2]: df
Out[2]:
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [3]: pd.options.display.max_colwidth
Out[3]: 50

In [4]: pd.options.display.max_colwidth = 100

In [5]: df
Out[5]:
                                                                               one
0                                                                              one
1                                                                              two
2  This is very long string very long string very long string veryvery long string

И действительно, если вы просто хотите проверить одно значение, обратившись к нему (как скаляр, а не как строка как df.iloc[2]), вы также увидите полную строку:

In [7]: df.iloc[2,0]    # or df.loc[2,'one']
Out[7]: 'This is very long string very long string very long string veryvery long string'

Ответ 2

Это то, что вы хотели сделать?

In [7]: x =  pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']})

In [8]: x
Out[8]: 
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [9]: x['one'][2]
Out[9]: 'This is very long string very long string very long string veryvery long string'

Ответ 3

Другой, довольно простой подход - вызвать функцию списка:

list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']

Не стоит упоминать, что не стоит собирать список целых столбцов, но для простой строки - почему бы и нет

Ответ 4

Другой простой способ вывести всю строку - это вызвать values в кадре данных.

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

print(df.values)

Выход будет

[['one']
 ['two']
 ['This is very long string very long string very long string veryvery long string']]

Ответ 5

Используйте pd.set_option('display.max_colwidth', -1) для автоматических pd.set_option('display.max_colwidth', -1) и многострочных ячеек.

Это отличный ресурс о том, как использовать дисплей Jupyters с пандами в полной мере.

Ответ 6

Как я часто разбираюсь с ситуацией, которую вы описываете, является использование метода .to_csv() и запись в stdout:

import sys

df.to_csv(sys.stdout)

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

Я опубликовал это первоначально в ответ на несколько связанный вопрос в вывод данных из всех столбцов в фрейме данных в pandas