팬더 : 설정 번호 최대 행 수


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.