作为一项规则,我希望为estimated_background_signal
个对象使用长的描述性列名(例如bg
而不仅仅是DataFrame
)。这种偏好的一个缺点是DataFrame
的显示形式有几列比它们的值要宽得多。例如:
In [10]: data.head()
barcode estimated_background_signal inhibitor_code inhibitor_concentration
0 R00577279 133 IRB 0.001
1 R00577279 189 SNZ 0.001
2 R00577279 101 CMY 0.001
3 R00577279 112 BRC 0.001
4 R00577279 244 ISB 0.001
如果显示器更窄则会很好。忽略标题,最窄的显示将是:
0 R00577279 113 IRB 0.001
1 R00577279 189 SNZ 0.001
2 R00577279 101 CMY 0.001
3 R00577279 112 BRC 0.001
4 R00577279 244 ISB 0.001
...但完全取消标题并不是一个完全令人满意的解决方案。一个更好的方法是使显示宽度足以允许一些标题,可能占用几行:
barcode estim inhib inhib
ated_ itor_ itor_
backg code conce
0 R00577279 113 IRB 0.001
1 R00577279 189 SNZ 0.001
2 R00577279 101 CMY 0.001
3 R00577279 112 BRC 0.001
4 R00577279 244 ISB 0.001
很明显,没有一种约定适用于所有情况,但无论如何,pandas
提供了自定义DataFrame
显示形式的标题和列宽的方法?
答案 0 :(得分:1)
显然可以使用pd.set_option个显示设置。如果您正在寻找不涉及更改笔记本显示设置的熊猫特定答案,请考虑以下内容。
Build Settings
答案 1 :(得分:0)
这是一种以非标准方式使用pandas的多索引功能的黑客,虽然我没有看到这样做的任何重大问题。当然,使用多索引而不是简单索引会增加一些复杂性。
cols = df.columns
lencols = [ int(len(c)/2) for c in cols ]
df.columns = pd.MultiIndex.from_tuples(
tuple( ( c[:ln], c[ln:] ) for c, ln in zip(cols, lencols) ) )
结果:
bar estimated_bac inhibit inhibitor_c
code kground_signal or_code oncentration
0 R00577279 133 IRB 0.001
1 R00577279 189 SNZ 0.001
2 R00577279 101 CMY 0.001
3 R00577279 112 BRC 0.001
4 R00577279 244 ISB 0.001
您还可以考虑创建一个字典,以便在long&和根据需要填写短名称: