パンダデータフレームからHTMLに変換するときに、HTMLで完全な(切り捨てられていない)データフレーム情報を表示する方法は?


213

DataFrame.to_html関数を使用して、pandasデータフレームをhtml出力に変換しました。これを別のhtmlファイルに保存すると、ファイルの出力が切り捨てられます。

たとえば、私のTEXT列では、

df.head(1) 表示されます

映画は素晴らしい努力でした...

の代わりに

この映画は、この時期に広まった複雑な社会的感情を解体するための優れた取り組みでした。

このレンディションは、大規模なパンダデータフレームの画面に適した形式の場合は問題ありませんが、データフレームに含まれる完全な表形式のデータを表示するhtmlファイル、つまり、以前のテキストスニペット。

HTMLバージョンの情報のTEXT列の各要素について、切り詰められていない完全なテキストデータをどのように表示できますか?HTMLテーブルが完全なデータを表示するために長いセルを表示する必要があると想像しますが、私が理解している限り、列幅のパラメーターのみをDataFrame.to_html関数に渡すことができます。

回答:


422

display.max_colwidthオプションを-1次のように設定します。

pd.set_option('display.max_colwidth', -1)

set_option docs

たとえば、iPythonでは、情報が50文字に切り捨てられています。超過分は省略されます。

ここに画像の説明を入力してください

このdisplay.max_colwidthオプションを設定すると、情報が完全に表示されます。

ここに画像の説明を入力してください


10
ドキュメントによると、None無制限を意味するように設定する必要があります。
kynan 2015年

21
正解です。つまり、に設定しないでくださいNone。そうしないと、ValueError: Value must have type '<class 'int'>'エラーが発生します。
xpt

それは私が話しているものです!
Ivan

2
max_columns使用して私のために働いた答え、Noneの2番目の引数としてset_option
キロジュール

8
あなたはこれらの表示オプションは、恒久的に一度だけではなく、適用したい場合は、のようなコンテキストマネージャを使用することができますwith pd.option_context('display.max_colwidth', -1): display(df)
SA

114
pd.set_option('display.max_columns', None)  

id (2番目の引数)は列を完全に表示できます。


ちなみに、テーブルの中央付近の省略記号(...)で表されているように、列の数は切り捨てられていました。ありがとう!
4

4
これは私にとってはうまくいき、他の答えはうまくいきませんでした。私はPython 3.6を使用しています
Durga Swaroop

1
これはPython 2.7では機能しませんでしたが、@ behzad.nouriによる最初の回答は機能しました。
r3robertson

これは受け入れられる答えになるはずです。オプション付きの現在の受け入れ応答はmax_colwidth、フィールドの値が長すぎるために発生する切り捨ての問題を解決できます。ただし、ほとんどの人にとって切り捨ての問題は実際には列が多すぎると思います。それで、これmax_columnsは受け入れられるべきです。
クリストファー

@クリストファー、OPは1列の幅について尋ねました、多くは両方のためにここに来ますので、カールによる答えはそれらにもっと関連しています。
Alexei Martianov

87

pd.set_option('display.max_columns', None)表示される最大列の数を設定する一方で、このオプションpd.set_option('display.max_colwidth', -1)は各単一フィールドの最大幅を設定します。

私の目的のために、コードの残りの部分に影響を与えずに巨大なデータフレームを完全に印刷する小さなヘルパー関数を作成しました。また、浮動小数点数を再フォーマットし、仮想ディスプレイの幅を設定しました。あなたはあなたのユースケースのためにそれを採用するかもしれません。

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')

非推奨の警告を回避するには、print(x)の上の行で-1を「なし」に変更します
Mark Zhukovsky

1

やっとこれを行うことを探している人のために。私はdaskで同様のオプションを見つけることができませんでしたが、パンダ用の同じノートブックでこれを単純に実行すると、daskでも機能します。

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)

0

次のコードの結果、以下のエラーが発生します。

pd.set_option('display.max_colwidth', -1)

FutureWarning:負の整数を渡すことはバージョン1.0では非推奨であり、将来のバージョンではサポートされません。代わりに、Noneを使用して列幅を制限しないでください。

代わりに、次を使用します。

pd.set_option('display.max_colwidth', None)

これはタスクを実行し、バージョン1.0 以降のパンダのバージョンに準拠しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.