Полностью вывести очень длинную строку в панде
Я борюсь с, казалось бы, очень простой вещью. У меня есть фрейм данных панд, содержащий очень длинную строку.
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
поможет мне.
Любые идеи приветствуются. Выглядит очень просто, но не в состоянии получить это!
Ответы
Ответ 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