2017-03-29 17 views
6

データフレーム内の一部の列に長いタイトルが付いています。このテキストをラップする機能が必要です。Python Pandas DataFrameまたはJupyterノートブックで列名をラップする

pd.DataFrame(np.random.randn(2, 10), 
    columns=['Very Long Column Title ' + str(i) for i in range(10)]) 

DataFrame with wrapped column names

をしかし、私は少ない列を持っている場合、タイトルは折り返されません:私は、私がそうであるように、この機能はパンダに組み込まれていることを知っている

pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long Column Title ' + str(i) for i in range(2)]) 

DataFrame does not wrap column names

改行を手動で挿入しようとしました:

import pandas as pd  
pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long \n Column Title ' + str(i) for i in range(2)]) 

しかし、これは上記と同じ出力です。

私はこのトピックの答えのために類似した見つけた:

私はジュピターのノートブックで作業していますが、pandas-ba可能であれば、sed溶液で洗浄する。

答えて

3

はIPythonのプロパティを変更関与しない答えです:

df = pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long Column Title ' + str(i) for i in range(2)]) 
df.style.set_table_styles([dict(selector="th",props=[('max-width', '50px')])]) 
+1

ありがとう!私が望んでいたネイティブなパンダの結果。 – Rachel

5

ジュピターのノートブックは、さまざまなソースから表示プロパティを継承します。 pandasには、pandasがテキストを折り返す原因ではないため、実際にはレンダリングされたHTMLであるため、列ヘッダーの幅を制限するプロパティはありません。

あなたが使用してテーブルヘッダの最大幅を制限するために、デフォルトJupyterノートブックのスタイルを上書きすることができます。

from IPython.core.display import HTML 
HTML("<style>.rendered_html th {max-width: 120px;}</style>") 

実行HTMLテーブルヘッダの最大列幅を設定するには、ノートブックの上部に一度、このコードを〜120ピクセル。ここで

+0

パーフェクト!私はこれがどこかの設定でなければならないことを知っていましたが、どこを見つけることができませんでした。 – Rachel

0

あなたがして、列見出しにスペースを挿入することによって、正しい行動「のハック」することができます

def colfix(df, L=5): return df.rename(columns=lambda x: ' '.join(x.replace('_', ' ')[i:i+L] for i in range(0,len(x),L)) if df[x].dtype in ['float64','int64'] else x) 

colfix(your_df) 

私を参照してください。同様の質問に回答https://stackoverflow.com/a/45078833/6903458

関連する問題