web-dev-qa-db-ja.com

pandasデータフレームに非常に長い文字列を完全に印刷します

一見非常に単純なことに苦労しています。非常に長い文字列を含む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の答えの1つは、pandas表示オプションを使用して列幅を増やすことを提案しましたが、どちらも機能しませんでした。
  • また、set_printoptionsがどのように役立つかわかりませんでした。

どんなアイデアも感謝します。とてもシンプルに見えますが、取得できません!

82
Yantraguru

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

そして実際、1つの値を検査する場合、(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'
121
joris

自動改行と複数行セルにはpd.set_option('display.max_colwidth', -1)を使用します。

This は、pandasでjupytersディスプレイを最大限に使用する方法に関する優れたリソースです。

13
omnesia

別の非常に単純なアプローチは、リスト関数を呼び出すことです。

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

言及する価値はありませんが、列全体をリストするために修道院を作るのは良くありませんが、簡単な行のために-なぜ

11
Rocketq

文字列全体を印刷するもう1つの簡単な方法は、データフレームで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']]
6
bigbounty

これはあなたがするつもりだったことですか?

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'
4
fixxxer

あなたが説明する状況に私がよく対処する方法は、.to_csv()メソッドを使用してstdoutに書き込むことです。

import sys

df.to_csv(sys.stdout)

更新:sys.stdoutの代わりにNoneを使用するだけで同様の効果が得られるようになりました!

これにより、文字列全体を含むデータフレーム全体がダンプされます。 to_csvパラメーターを使用して、列の区切り文字、インデックスを印刷するかどうかなどを構成できます。ただし、適切にレンダリングするよりも見栄えが悪くなります。

pandasのデータフレーム内のすべての列からデータを出力する

2
user2428107