【问题标题】:Can I set variable column widths in pandas?我可以在熊猫中设置可变列宽吗?
【发布时间】:2017-02-02 10:59:18
【问题描述】:

我在 pandas 数据框中有几列包含长文本字符串,但我只对其中一个感兴趣。有没有办法使用类似于pd.set_option('max_colwidth', 60) 的东西,但仅用于单列,而不是扩大我的 df 中所有列的宽度?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果要更改 Jupyter Notebook 中的显示,可以使用 Style 功能。 要仅对某些列使用此格式,只需通过 subset 参数指明要放大的列。这基本上是 HTML 和 CSS。

    ### Test data
    df = DataFrame({'text': ['foo foo foo foo foo foo foo foo', 'bar bar bar bar bar'],
                     'number': [1, 2]})
    
    df.style.set_properties(subset=['text'], **{'width': '300px'})
    

    【讨论】:

    • 对我来说不幸的是,我认为这对 pandas 0.23.0 没有任何影响。将此样式应用于我的 df 和其中的目标列,目标列的大小保持不变,而不是为 width 提供的值。可能值得强调的是,这设置了最大宽度而不是固定大小的宽度。
    【解决方案2】:

    在 Pandas 参考资料的this page 中概述了我在较新版本的 Pandas 上找到的最简单的解决方案。搜索display.max_colwidth——页面下方大约 1/3 处描述了如何使用它,例如:

    pd.set_option('max_colwidth', 400)

    请注意,这将设置会话的值,或者直到更改。

    如果您只想进行临时更改,请参阅 this info 临时设置上下文,例如:

    from pandas import option_context
    
    with option_context('display.max_colwidth', 400):
        display(df.head())
    

    我还没有找到设置单个列的明显方法,但这种方法只会将需要更多空间的列扩展到您设置的最大值。

    如果尝试调整如何在屏幕上/表格中/为其他列腾出空间,也可能有用的是pd.set_option('precision', 2),它会更改小数位数。

    【讨论】:

    • 非常有用、完整、好记、即用的答案!与display 的一个很好的接触(需要在上下文中漂亮地打印表格,例如for 循环或with 子句)。
    • @mirekphd 好话!关于为什么需要display 的原因真的很好——我没有解释这一点:-)
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多