ehi*_*ler 7 python dataframe pandas
显示数据框等时如何限制 Pandas 中的列宽?我知道display.max_colwidth,但它不影响列名称。另外,我不想分解名称,而是要截断。
如果我设置display.max_colwidth它,那么肯定会限制值,并用省略号缩短它们,但列名仍然很长且不受影响。我没有在文档中的任何地方看到这一点,也没有在此处或此处的大线程中看到它。这是一个错误吗?我知道我可以截断列的名称,但我希望它们很长,否则在显示时会缩短。
需要明确的是,这就是正在发生的事情:
前
State area_harveste_2016_1000_acres area_harvested_2017_1000_acres yield_per_acr_2016_bushels yield_per_acre_2017_bushels
4 Alabama 315 235 120.0 165.0
Run Code Online (Sandbox Code Playgroud)
改变宽度
pd.set_option("display.max_colwidth",5)
Run Code Online (Sandbox Code Playgroud)
后
State area_harveste_2016_1000_acres area_harvested_2017_1000_acres yield_per_acr_2016_bushels yield_per_acre_2017_bushels
4 A... 315 235 1... 1...
Run Code Online (Sandbox Code Playgroud)
更新
目前,这是 Pandas 的一个已确认问题(截至 20.3,问题为#7059和#16911。在解决之前,我编写了一个解决方案,它设置和取消设置max_colwidth以及重命名截断。尽管没有这个类似问题的答案
def pf(df, L=15):
"""Limit ENTIRE column width (including header)"""
O = pd.get_option("display.max_colwidth")
pd.set_option("display.max_colwidth", L)
print(df.rename(columns=lambda x: x[:L - 3] + '...' if len(x) > L else x))
pd.set_option("display.max_colwidth", O)
Run Code Online (Sandbox Code Playgroud)
您可以使用 Pandas Styler,它可以为数据帧的 HTML 显示设置 CSS 属性:
dfs = df.style.set_table_styles([dict(selector="th", props=[('max-width', '120px'),
('text-overflow', 'ellipsis'), ('overflow', 'hidden')])])
display(dfs)
Run Code Online (Sandbox Code Playgroud)
th用于表头,用于表的其余数据td。