加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何限制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

标题应该仍然足够详细,以便从首字母开始了解每列的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读