我想從熊貓做出很好的格式化表。我的一些列名太長了。這些列的單元格很大,導致整個表格變得混亂。旋轉熊貓DataFrame的列名
在我的例子中,是否可以在列名顯示時旋轉它?
data = [{'Way too long of a column to be reasonable':4,'Four?':4},
{'Way too long of a column to be reasonable':5,'Four?':5}]
pd.DataFrame(data)
我想從熊貓做出很好的格式化表。我的一些列名太長了。這些列的單元格很大,導致整個表格變得混亂。旋轉熊貓DataFrame的列名
在我的例子中,是否可以在列名顯示時旋轉它?
data = [{'Way too long of a column to be reasonable':4,'Four?':4},
{'Way too long of a column to be reasonable':5,'Four?':5}]
pd.DataFrame(data)
使用Python庫'pybloqs'(http://pybloqs.readthedocs.io/en/latest/),可以旋轉列名稱以及在頂部添加填充。唯一的缺點是(正如文檔中提到的)頂端填充不能與Jupyter內聯。該表必須導出。
import pandas as pd
from pybloqs import Block
import pybloqs.block.table_formatters as tf
from IPython.core.display import display, HTML
data = [{'Way too long of a column to be reasonable':4,'Four?':4},
{'Way too long of a column to be reasonable':5,'Four?':5}]
dfoo =pd.DataFrame(data)
fmt_header = tf.FmtHeader(fixed_width='5cm',index_width='10%',
top_padding='10cm', rotate_deg=60)
table_block = Block(dfoo, formatters=[fmt_header])
display(HTML(table_block.render_html()))
table_block.save('Table.html')
我能得到它,使文本完全轉身90度,但無法弄清楚如何使用text-orientation: upright
,因爲它只是使文字無形:(你失蹤了具有用於text-orientation
被設置writing-mode
屬性有什麼影響。另外,我把它只能通過修改選擇一點適用於列標題。
dfoo.style.set_table_styles([dict(selector="th.col_heading",props=[("writing-mode", "vertical-lr"),('text-orientation', 'upright')])])
希望這能讓你更接近你的目標!
這絕對會變暖!所有的單個字母至少旋轉 –
請你加標籤'jupyter notebook' – Wen
顯然,這取決於你的情況,但也許是有意義的只是縮短/提高列名?但是,對於解決方法,您可以考慮轉換爲「假」多索引。例如。如果列名是「大衛南瓜」,你可以將「大衛」作爲最高級別,將「南瓜」作爲第二級別。顯然,這並不是多指標的,但我認爲它基本上會做你想做的。 – JohnE
@JohnE,感謝您的建議。文本包裝是@Wen建議刪除的東西,但是是:'df.style.set_table_styles([dict(selector =「th」,props = [('max-width','50px')])])' 這是一個很好的解決方法,適用於短語,就像我的例子。不過,我也有很長的一段話。我仍然很想看看輪換是否可能!我不是CSS選擇專家,但我認爲這應該工作,但不會:'dfoo.style.set_table_styles([dict(selector =「th」,props = [('text-orientation','upright')]] )])' –