如何在显示Pandas数据框时限制索引列的宽度/高度?

e5nszbig  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(124)

我有一个 Dataframe ,如下所示:

df = pd.DataFrame(data=list(range(0,10)),
                  index=pd.MultiIndex.from_product([[str(list(range(0,1000)))],list(range(0,10))],
                                                   names=["ind1","ind2"]),
                  columns=["col1"])
df['col2']=str(list(range(0,1000)))

不幸的是,上面的 Dataframe 显示如下:

如果我尝试设置:pd.options.display.max_colwidth = 5,则col2会有行为,并显示在单一列中,但ind1不会有行为:

由于ind1是多索引的一部分,我不在乎它占用多行,但我想限制它的宽度。如果我能规定每行最多占用一行的高度,那就太好了。我不在乎单个单元格在显示时被截断,因为我更喜欢在任何方向上滚动更少的内容来查看单元格。
我知道我可以创建自己的HTML显示。这很棒,但是我认为对于我的用例来说太复杂了,我只是想在jupyter笔记本中使用更小宽度的列来进行数据分析。不过,如果你想写一个类似的用例,这样的解决方案可能会对其他类似的用例有所帮助。
我正在寻找的是一些设置,我认为它是pd.options.display.max_colwidth,限制列宽,即使它是一个索引。一些东西,将禁用换行的长文本可能会帮助解决同样的问题。
我还尝试在没有索引df.style.hide_index()的情况下打印,与pd.options.display.max_colwidth = 5结合使用,但col2随后停止工作:

现在我没办法了,有什么建议吗?

eh57zj3b

eh57zj3b1#

以下是一种方法:

import pandas as pd

df = pd.DataFrame(
    data=list(range(0, 10)),
    index=pd.MultiIndex.from_product(
        [[str(list(range(0, 1000)))], list(range(0, 10))], names=["ind1", "ind2"]
    ),
    columns=["col1"],
)
df["col2"] = str(list(range(0, 1000)))

在下一个Jupyter单元格中,运行:

df.style.set_properties(**{"width": "10"}).set_table_styles(
    [{"selector": "th", "props": [("vertical-align", "top")]}]
)

输出:

相关问题