sourcecode

판다 데이터 프레임에서 매우 긴 문자열을 완전히 인쇄합니다.

copyscript 2023. 7. 13. 21:01
반응형

판다 데이터 프레임에서 매우 긴 문자열을 완전히 인쇄합니다.

저는 겉으로 보기에 매우 단순해 보이는 것 때문에 어려움을 겪고 있습니다.저는 매우 긴 문자열이 포함된 판다 데이터 프레임을 가지고 있습니다.

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
  • 스택 오버플로 답변 중 하나는 판다 디스플레이 옵션을 사용하여 열 너비를 늘리자고 제안했지만 역시 효과가 없었습니다.
  • 나 또한 방법을 이해하지 못했습니다.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', None)자동 줄 바꿈 및 다중 줄 셀에 사용됩니다.

이것은 판다와 함께 목성 디스플레이를 최대한 활용하는 방법에 대한 훌륭한 자료입니다.


편집됨: 예전에pd.set_option('display.max_colwidth', -1).

또 다른 매우 간단한 접근법은 호출 목록 기능입니다.

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']]

인쇄하기 전에 코드에 다음 행을 추가하기만 하면 됩니다.

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

다음 단계를 수행하여 다른 추가 옵션을 설정할 수 있습니다.

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

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

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

  • 마찬가지로 더 많은 행을 표시하려면 다음과 같이 표시해야 하므로 행 수를 변경할 수 있습니다.

    pd.options.display.max_rows = 999
    

    (이렇게 하면 한 번에 999개의 행을 인쇄할 수 있습니다.)

이것은 잘 작동할 것입니다.

판다의 추가 옵션/설정을 변경하려면 의사에게 문의하십시오.

나는 작은 유틸리티 기능을 만들었고, 이것은 나에게 잘 작동합니다.

def display_text_max_col_width(df, width):
    with pd.option_context('display.max_colwidth', width):
        print(df)

display_text_max_col_width(train_df["Description"], 800)

나는 어떠한 옵션도 영구적으로 설정하지 않고 내 요구에 따라 너비의 길이를 변경할 수 있습니다.

주피터 노트북을 사용하는 경우 전체 문자열을 인쇄하는 HTML 테이블로 판다 데이터 프레임을 인쇄할 수도 있습니다.

from IPython.display import display, HTML
display(HTML(df.to_html()))

산출량

    one
0   one
1   two
2   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'

제가 종종 당신이 묘사한 상황에 대처하는 방법은.to_csv()방법 및 stdout에 쓰기:

import sys

df.to_csv(sys.stdout)

사용할 수 것입니다.Nonesys.stdout비슷한 효과로!

이렇게 하면 문자열 전체를 포함하여 전체 데이터 프레임이 덤프됩니다.to_csv 매개 변수를 사용하여 열 구분 기호, 인덱스 인쇄 여부 등을 구성할 수 있습니다.하지만 제대로 렌더링하는 것보다는 덜 예쁠 것입니다.

저는 원래 이것을 팬더의 데이터 프레임에 있는 모든 컬럼의 출력 데이터에 다소 관련된 질문에 대한 답변으로 게시했습니다.

언급URL : https://stackoverflow.com/questions/29902714/print-very-long-string-completely-in-pandas-dataframe

반응형