pandas - 为什么 pandas 不能正确打印带有长 MultiIndex 级别名称的 DataFrame?
问题描述
pandas 有很多魔力,可以根据终端窗口的大小漂亮地打印 DataFrame。不幸的是,我的似乎有点校准错误,因此我经常不得不将终端宽度扩大 1-2 个字符以使其适合。就好像它一直低估 MultiIndex 的宽度,或者高估终端窗口的宽度。
据我所知,问题发生在以下情况:
有太多列无法同时显示在屏幕上,并且
该索引是一个 MultiIndex,其中包含多个具有长名称的级别。
这是一个示例脚本:
import pandas
import numpy as np
df = pandas.DataFrame(np.zeros((9, 16), dtype=np.int))
df.index = pandas.MultiIndex.from_product([
['awefawef', 'asdaoijo', 'awefoiasdfasji'],
['awefawef', 'asdoaijo', 'awefoiji', ],
])
print(df)
如果我只是稍微增加宽度,就可以了。这就是我想要的:列的一个子集,选择不超过可用宽度。
但随着我继续工作,我必须每隔几分钟将终端宽度增加 1-2 个字符,这令人沮丧。所以它检测到我正在增加终端宽度,但它仍然倾向于使输出稍微太宽。
我目前设置了这些选项。从文档中看,这些对我来说是正确的。
In [4]: pandas.get_option('display.width')
Out[4]: 80
In [5]: pandas.get_option('display.expand_frame_repr')
Out[5]: True
In [12]: pandas.get_option('display.pprint_nest_depth')
Out[12]: 3
有小费吗??
解决方案
我有一个解决方法,但我希望有人会发布更好的答案。
如果我设置:
pandas.set_option('display.max_columns', 12)
pandas.set_option('display.width', None)
然后输出正确格式化为终端宽度。
0 1 2 3 4 5 ... 10 11 \
awefawef awefawef 0 0 0 0 0 0 ... 0 0
asdoaijo 0 0 0 0 0 0 ... 0 0
awefoiji 0 0 0 0 0 0 ... 0 0
asdaoijo awefawef 0 0 0 0 0 0 ... 0 0
asdoaijo 0 0 0 0 0 0 ... 0 0
awefoiji 0 0 0 0 0 0 ... 0 0
awefoiasdfasji awefawef 0 0 0 0 0 0 ... 0 0
asdoaijo 0 0 0 0 0 0 ... 0 0
awefoiji 0 0 0 0 0 0 ... 0 0
12 13 14 15
awefawef awefawef 0 0 0 0
asdoaijo 0 0 0 0
awefoiji 0 0 0 0
asdaoijo awefawef 0 0 0 0
asdoaijo 0 0 0 0
awefoiji 0 0 0 0
awefoiasdfasji awefawef 0 0 0 0
asdoaijo 0 0 0 0
awefoiji 0 0 0 0
[9 rows x 16 columns]
有两个缺点:
- 我宁愿根据每列的宽度选择列数,而不是硬编码为 12。
- 这会将输出溢出到多个“帧”上,以达到 12 列。我宁愿用“...”将其截断以适合所有内容。
尽管如此,这种解决方法至少会产生清晰的结果。如果有人可以发布更完整的答案,我会接受。
推荐阅读
- encryption - 加密数据是否包含空格?
- input - isNumberKey 与 truncateDecimals 结合导致输入字段中出现异常舍入
- latex - 在 Latex 投影仪中,如何在幻灯片上绘制大箭头
- python - 如何在没有子类化的情况下使用功能 api 在 Keras 中添加偏差变量?
- javascript - 窗口边框到元素的距离
- python - ValueError:无法将字符串转换为浮点数:'FLANG Group'
- android - android.arch.lifecycle:common-java8 无法识别
- javascript - “如何在 javascript 中获取 google apps script web app sandbox 的 url 查询字符串参数?
- sql - Spark SQL 中的上个季度结束日期
- python - 在 python 中使用 Runge-Kutta 求解耦合微分方程组