如何限制Pandas中列标题的宽度
发布时间:2020-12-20 13:19:30 所属栏目:Python 来源:网络整理
导读:在显示数据帧等时,如何限制Pandas中的列宽?我知道display.max_colwidth但它不会影响列名.另外,我不想破坏名称,而是要截断. 如果我设置display.max_colwidth,它肯定会限制值,并用省略号缩短它们,但列名称保持长且不受影响.我没有在documentation中的任何地方
在显示数据帧等时,如何限制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) 解决方法
从v0.20.3开始,我不相信大熊猫已经为此提供了支持.
作为快速修复,您可以通过使用截断长字的lambda回调调用df.rename来截断显示的列名. 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 标题应该仍然足够详细,以便从首字母开始了解每列的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |