如何在显示数据帧等时限制Pandas中的列宽?我知道display.max_colwidth
,但它不会影响列名。另外,我不想破坏名称,而是要截断。
如果我设置display.max_colwidth
它确实足以限制值,并使用省略号缩短它们,但列名称保持长且不受影响。我在documentation的任何地方都没有看到这一点,并且在大线程here或here中没有看到它。这是一个错误吗?我知道我可以截断列的名称,但我希望它们很长,否则在显示时会缩短。
只是要清楚这是发生了什么:
之前
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
更改宽度
pd.set_option("display.max_colwidth",5)
后
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...
更新
目前这是Pandas已确认的问题(截至20.3,问题为#7059和#16911。在解决之前,我写了一个解决方法,设置和取消设置max_colwidth
以及截断重命名。虽然没有similar question
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)
答案 0 :(得分:0)
截至v0.20.3,我不相信大熊猫已为此提供支持。
作为快速解决方法,您可以通过使用df.rename
回调来调用lambda
来截断长字词来截断要显示的列名称。
MVCE:
In [1424]: df
Out[1424]:
State area_harveste_2016_1000_acres area_harvested_2017_1000_acres \
4 Alabama 315 235
yield_per_acr_2016_bushels yield_per_acre_2017_bushels
4 120.0 165.0
In [1425]: df.rename(columns=lambda x: '_'.join(k[0] if k.isalpha() else k for k in x.split('_')))
Out[1425]:
S a_h_2016_1000_a a_h_2017_1000_a y_p_a_2016_b y_p_a_2017_b
4 Alabama 315 235 120.0 165.0
标题应该仍然足够详细,以便从首字母开始了解每列的内容。