为了账号安全,请及时绑定邮箱和手机立即绑定

如何显示 pandas 数据框,使其宽度适合我的屏幕?

如何显示 pandas 数据框,使其宽度适合我的屏幕?

MMTTMM 2023-12-29 14:34:00
我有一个带有文本数据的 pandas 数据框,我想显示所有文本而不被截断,所以我设置pd.set_option('display.max_colwidth', None) pd.set_option('display.max_rows', None)但是,该表格现在不适合我的屏幕,您可以看到图像底部出现了滚动条。我想显示一个数据框,使其宽度适合我的屏幕(即单元格可以增加高度,但不能增加宽度)。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

这是我找到的解决方案


from IPython.display import display

display(_df.style.set_properties(**{

        'width': '230px',

        'max-width': '230px'

    }))

我为此编写了一个辅助函数


# decorator

def pandas_display(func):

    default_1 = pd.options.display.max_rows

    default_2 = pd.options.display.max_colwidth

    def wrapper(_df, exclude_cols=None, properties=None, limit_float=2):

        pd.options.display.max_rows = 1000

        pd.options.display.max_colwidth = None

        func(_df, exclude_cols, properties, limit_float)

        pd.options.display.max_rows = default_1

        pd.options.display.max_colwidth = default_2

    return wrapper

    

    

@pandas_display

def display_df(self, exclude_cols, properties, limit_float):

    if exclude_cols is not None:

        if not isinstance(exclude_cols, list):

            exclude_cols = list(exclude_cols)

        cols = [x for x in self.columns.values if x not in set(exclude_cols)]

        self = self[cols]


    if not properties:

        properties = {

            'text-align': 'left',

            'white-space': 'pre-wrap',

            'word-wrap': 'break-word',

            'width': '230px',

            'max-width': '230px',

        }

        

    a = self.style.set_properties(**properties)

    if limit_float is not None:

        a.format(thousands=',', precision=limit_float)

    display(a)

    

d = display_df

pd.DataFrame.d = d

你可以通过它打电话df.d()


查看完整回答
反对 回复 2023-12-29
  • 1 回答
  • 0 关注
  • 46 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信