[python] Pandas 데이터 프레임에서 매우 긴 문자열을 완전히 인쇄하십시오.

나는 겉보기에 매우 간단한 일로 어려움을 겪고 있습니다. 매우 긴 문자열을 포함하는 팬더 데이터 프레임이 있습니다.

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나를 도울 방법 을 얻지 못했습니다 .

어떤 아이디어라도 감사합니다. 매우 간단 해 보이지만 얻을 수 없습니다!



답변

를 사용 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'


답변

사용하여 pd.set_option('display.max_colwidth', -1)자동 줄 바꿈 및 여러 줄 세포.

이것은 팬더와 함께 jupyters 디스플레이를 최대한 활용하는 방법에 대한 훌륭한 리소스입니다.


답변

또 다른 매우 간단한 접근 방식은 목록 함수를 호출하는 것입니다.

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

언급 할 가치가 없습니다. 수녀원이 전체 열을 나열하는 것은 좋지 않지만 간단한 줄로 표시하는 것은 좋지 않습니다.


답변

전체 문자열을 인쇄하는 또 다른 쉬운 방법 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']]


답변

이것이 당신이하려는 의도입니까?

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'


답변

인쇄하기 전에 코드에 다음 줄을 추가하십시오.

 pd.options.display.max_colwidth = 90  # set a value as your need

다른 추가 옵션을 설정하려면 다음 단계를 수행하면됩니다.

  • pandas max_columns 기능의 옵션을 다음과 같이 변경하여 더 많은 열을 표시 할 수 있습니다.

    import pandas as pd
    pd.options.display.max_columns = 10

    (이렇게하면 10 개의 열을 표시 할 수 있으며 필요에 따라 변경할 수 있습니다.)

  • 이와 같이 더 많은 행을 표시하려면 다음과 같이 표시해야 할 행 수를 변경할 수 있습니다.

    pd.options.display.max_rows = 999

    (이것은 한 번에 999 행을 인쇄 할 수 있습니다)

이것은 잘 작동합니다

팬더에 대한 더 많은 옵션 / 설정을 변경하려면 친절하게 문서 를 참조하십시오.


답변

설명하는 상황을 자주 처리하는 .to_csv()방법 은 메서드 를 사용하고 stdout에 쓰는 것입니다.

import sys

df.to_csv(sys.stdout)

업데이트 : 이제 비슷한 효과 None대신 사용이 가능합니다 sys.stdout!

이것은 모든 문자열을 포함하여 전체 데이터 프레임을 덤프해야합니다. to_csv 매개 변수를 사용하여 열 구분 기호, 인덱스 인쇄 여부 등을 구성 할 수 있습니다. 그래도 제대로 렌더링하는 것보다 덜 예쁘게 보일 것입니다.

나는 원래 pandas의 데이터 프레임에있는 모든 열의 데이터 출력에 다소 관련된 질문에 대한 답변으로 게시했습니다.