팬더 : 설정 번호 최대 행 수


138

다음을 보는 데 문제가 있습니다 DataFrame.

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

문제는 ipython 노트북에서 기본값마다 모든 행을 인쇄하지는 않지만 결과 행을 보려면 슬라이스해야한다는 것입니다. 다음 옵션조차도 출력을 변경하지 않습니다.

pd.set_option('display.max_rows', 500)

누구든지 전체 배열을 표시하는 방법을 알고 있습니까?


기본 (예 : 특수 구성 프로파일이없는) 노트북에서 코드를 실행하면 모든 값으로 스크롤 가능한 꽤 인쇄 된 테이블이 나타납니다. 참고로, 내 팬더입니다 .__ version__ = 0.9.1 (
— 중요한지

나는 ipython이 아닌 일반 쉘을 의미했다
— Ryan Saxe

나는 이것이
— Andy Hayden

앤디 Wes에 의해 이미 확인 되었습니까? 이 버그를 어디에 제출할 수 있습니까? 해결 방법이 있습니까?
— Andy

방금 여기에 제출했습니다 .DataFrame repr에 대한 0.11의 마지막 순간 변경 사항이 있으므로 버그 보고서에 해당 내용을 참조했습니다. 해결 방법을 알려줄 것입니다.
— Andy Hayden

답변:


233

설정 display.max_rows:

pd.set_option('display.max_rows', 500)

이전 버전의 팬더 (<= 0.11.0)의 경우 display.height와를 모두 변경해야합니다 display.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

도 참조하십시오 pd.describe_option('display').

다음과 같이이 옵션을 일시적으로 만 설정할 수 있습니다 .

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

다음과 같이 옵션을 기본값으로 다시 설정할 수도 있습니다.

pd.reset_option('display.max_rows')

그리고 모두 다시 재설정하십시오.

pd.reset_option('all')


6
pd.describe_option ( 'display') +1, 모든 옵션을 모릅니다
— nom-mon-ir

41
이제 높이가 더 이상 사용되지 않으므로 display.max_rows 옵션으로 충분합니다.
— hanleyhansen

9
허용 된 답변 만보고있는 사람 : with pd.option_context('display.height', 500, 'display.max_rows', 500):일시적으로 만 설정하십시오.
— BallpointBen

나는 이것을 달성하기 위해 최선의 방법을 교정하거나 주어야한다. None을 사용하고 500으로 제한하지 마십시오. # pd.option_context ( 'display.max_rows', None, 'display.max_columns', None)으로 모든 행과 열을 임시로 표시합니다. display (df_facilities) 위 코드는 적용됩니다 코드가 포함 된 셀에서 다른 셀에서 재설정 할 필요가 없습니다.
— MGB.py

35

개인적으로, iPython 덕분에 탭 완성을 통해 쉽게 찾을 수 있으므로 할당 문으로 옵션을 직접 설정하는 것이 좋습니다. 정확한 옵션 이름이 무엇인지 기억하기가 어렵 기 때문에이 방법이 효과적입니다.

예를 들어 기억해야 할 것은 pd.options

pd.options.<TAB>

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

대부분의 옵션은 display

pd.options.display.<TAB>

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

여기에서 일반적으로 현재 값이 다음과 같이 출력됩니다.

pd.options.display.max_rows
60

그런 다음 원하는대로 설정했습니다.

pd.options.display.max_rows = 100

또한 옵션에 대한 컨텍스트 관리자를 알고 있어야합니다. 옵션은 코드 블록 내부에 옵션을 임시로 설정합니다. 옵션 이름을 문자열로 입력하고 원하는 값을 입력하십시오. 같은 줄에 여러 옵션을 전달할 수 있습니다.

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

다음과 같이 옵션을 기본값으로 다시 설정할 수도 있습니다.

pd.reset_option('display.max_rows')

그리고 모두 다시 재설정하십시오.

pd.reset_option('all')

를 통해 옵션을 설정하는 것이 여전히 좋습니다 pd.set_option. 난 그냥 직접 쉽게하고 덜 필요가있다 속성을 사용하여 발견 get_option하고 set_option.


4
with pd.option_context이 답변 중에서 가장 깨끗한 방법입니다. 최소한의 부작용.
— ijoseph

10

이미이 의견 과이 답변 에서 지적 되었지만 질문에 대한 직접적인 답변을 제공하려고 노력할 것입니다.

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context 는 pandas 0.13.1 ( pandas 0.13.1 릴리스 정보 ) 부터 사용할 수 있습니다 . 에 따르면 이 ,

with 블록을 종료하면 이전 설정으로 되돌아가는 일련의 옵션으로 코드 블록을 실행할 수 있습니다.


9

@hanleyhansen이 주석에서 언급했듯이 0.18.1 버전에서는 display.height옵션이 더 이상 사용되지 않으며 " display.max_rows대신 사용" 이라고 말합니다 . 따라서 다음과 같이 구성해야합니다.

pd.set_option('display.max_rows', 500)

참고 항목 릴리스 노트 - 0.18.1 문서 팬더 :

더 이상 사용되지 않는 display.height, display.width는 이제 형식화 옵션만으로 <0.11.0과 유사한 요약 트리거링을 제어하지 않습니다.


7
pd.set_option('display.max_rows', 500)
df

Jupyter 에서는 작동하지 않습니다 !
대신 다음을 사용하십시오.

pd.set_option('display.max_rows', 500)
df.head(500)

3

마찬가지로 이 답변 A와 비슷한 질문 , 설정을 해킹 할 필요가 없다. 작성하는 것이 훨씬 간단합니다.

print(foo.to_string())

1
문자열로 변환해서는 안됩니다. 앤디가 요청한 것이 아닙니다.
— simtim

1
@simtim Andy는 "전체 배열을 표시하는"방법을 물었습니다. 이렇게하면 허용되는 답변보다 훨씬 간단합니다.
— Ninjakannon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.