You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在显示Pandas DataFrame时限制索引列的宽高?

问题描述

我构造了如下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显示时,索引列ind1过宽且自动换行。设置pd.options.display.max_colwidth = 5后,普通列col2能正常截断显示,但索引列ind1不受这个参数限制;尝试用df.style.hide_index()隐藏索引并配合上述设置时,col2又无法正常显示。想找个简单的设置,既能限制索引列的宽度,又能让每行只占一行高度,减少滚动操作,不想用复杂的自定义HTML显示方式。

解决方案

方法一:利用pandas内置显示参数

直接设置max_seq_items限制索引中长序列的显示长度,配合max_colwidth控制普通列,两者结合就能让索引和普通列都被截断,且每行保持单行:

pd.options.display.max_colwidth = 5
pd.options.display.max_seq_items = 5

设置后,索引里的长字符串会被截断为类似[0, 1, ...]的形式,普通列也会按设定宽度截断,整个DataFrame显示时每行都是单行高度。

方法二:索引转普通列再转回

如果需要更灵活控制,可先把索引转为普通列,设置显示宽度后再重新设为索引:

# 把索引转为普通列
df_temp = df.reset_index()
# 设置列显示宽度
pd.options.display.max_colwidth = 5
# 重新设置回多级索引
df_temp.set_index(["ind1", "ind2"], inplace=True)
# 此时显示的索引列会和普通列一样被截断
display(df_temp)

这种方法本质是让索引列先以普通列的身份受max_colwidth限制,再恢复索引身份,同样不需要自定义HTML。

内容的提问来源于stack exchange,提问作者Andrei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:02:03