pandas dataframe에서 html로 변환 할 때 html로 전체 (잘리지 않은) 데이터 프레임 정보를 표시하는 방법은 무엇입니까?


213

DataFrame.to_html함수를 사용하여 팬더 데이터 프레임을 HTML 출력으로 변환했습니다 . 이것을 별도의 html 파일로 저장하면 파일이 잘린 출력을 표시합니다.

예를 들어 TEXT 열에서

df.head(1) 표시됩니다

영화는 훌륭한 노력이었습니다 ...

대신에

이 영화는이시기에 널리 퍼진 복잡한 사회적 감정을 해체하는 데 큰 노력을 기울였습니다.

이 판결은 화면에 친화적 인 거대한 팬더 데이터 프레임 형식의 경우에는 좋지만 데이터 프레임에 포함 된 완전한 테이블 형식 데이터를 표시하는 html 파일이 필요합니다. 이전 텍스트 스 니펫.

html 버전의 정보에서 TEXT 열의 각 요소에 대해 잘리지 않은 완전한 텍스트 데이터를 표시하려면 어떻게해야합니까? html 테이블에 완전한 데이터를 표시하기 위해 긴 셀을 표시해야한다고 생각하지만 이해하는 한 열 너비 매개 변수 만 DataFrame.to_html함수에 전달할 수 있습니다 .

답변:


426

display.max_colwidth옵션을 -1다음으로 설정하십시오 .

pd.set_option('display.max_colwidth', -1)

set_option 문서

예를 들어, iPython에서는 정보가 50 자로 잘립니다. 초과하는 것은 생략됩니다.

여기에 이미지 설명을 입력하십시오

display.max_colwidth옵션 을 설정하면 정보가 완전히 표시됩니다.

여기에 이미지 설명을 입력하십시오


10
문서에 따르면 None무제한을 의미 하도록 설정해야합니다 .
kynan

21
답은 정확합니다. 즉로 설정해서는 안됩니다 None. 그렇지 않으면 ValueError: Value must have type '<class 'int'>'오류가 발생합니다.
xpt

그게 내가 말하는거야!
Ivan

2
max_columns사용하는 나를 위해 일한 대답 None의 두 번째 인수로 set_option.
kilojoules

8
이러한 표시 옵션을 영구적이 아닌 한 번만 적용하려면 컨텍스트 관리자를 다음과 같이 사용할 수도 있습니다.with pd.option_context('display.max_colwidth', -1): display(df)
SA

115
pd.set_option('display.max_columns', None)  

id (두 번째 인수)는 열을 완전히 표시 할 수 있습니다.


제쳐두고, 테이블의 중앙 근처에 줄임표 (...)로 표시되는 열의 수가 잘 렸습니다. 감사!
four43

4
이것은 다른 대답이 아니라 나를 위해 일했습니다. 저는 Python 3.6을 사용하고 있습니다
Durga Swaroop

1
이것은 Python 2.7에서 작동하지 않았지만 @ behzad.nouri의 첫 번째 대답은 그렇지 않았습니다.
r3robertson

이것이 정답입니다. 옵션이있는 현재 수락 응답 max_colwidth은 너무 긴 필드 값으로 인한 잘림 문제를 해결할 수 있습니다. 그러나 대부분의 사람들에게 잘리는 문제는 실제로 너무 많은 열이라고 생각합니다. 그래서 이것은 max_columns받아 들여야합니다.
Christopher

@Christopher, OP는 한 열의 너비에 대해 물었고 많은 사람들이 여기에 와서 Karl의 대답이 더 관련이 있습니다.
Alexei Martianov

87

pd.set_option('display.max_columns', None)표시된 최대 열 수를 설정하는 동안 옵션 pd.set_option('display.max_colwidth', -1)은 각 단일 필드의 최대 너비를 설정합니다.

내 목적을 위해 나머지 코드에 영향을주지 않고 거대한 데이터 프레임을 완전히 인쇄하는 작은 도우미 함수를 작성했으며 부동 숫자를 다시 포맷하고 가상 디스플레이 너비를 설정합니다. 사용 사례에 맞게 채택 할 수 있습니다.

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')

지원 중단 경고를 피하기 위해 print (x) 위의 행에서 -1을 "없음"으로 변경
Mark Zhukovsky

1

이 작업을 어둡게하는 사람들에게 적합합니다. 나는 dask에서 비슷한 옵션을 찾을 수 없었지만 팬더 용 동일한 노트북 에서이 작업을 간단하게 수행하면 dask에서도 작동합니다.

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)

0

다음 코드는 아래 오류를 발생시킵니다.

pd.set_option('display.max_colwidth', -1)

FutureWarning : 음의 정수 전달은 버전 1.0에서 더 이상 사용되지 않으며 이후 버전에서는 지원되지 않습니다. 대신, 열 너비를 제한하지 않으려면 없음을 사용하십시오.

대신 다음을 사용하십시오.

pd.set_option('display.max_colwidth', None)

이것은 작업을 수행하고 버전 1.0 이후 의 판다 버전을 준수합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.