能否在IPython控制台中显示pandas样式?

6

是否可以在iPython控制台中显示pandas样式?以下是在Jupyter笔记本中的代码

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 5)})
df = pd.concat([df, pd.DataFrame(np.random.randn(5, 1), columns=list('B'))],
               axis=1)
df.style.format({'B': "{:.2%}"})

正确地生成

enter image description here

在控制台中我只得到了
In [294]: df.style.format({'B': "{:.2%}"})
Out[294]: <pandas.io.formats.style.Styler at 0x22f3f4fe780>

这里能否实现类似的效果,还是样式引擎依赖于html前端?感谢您提前的帮助。
1个回答

5

我认为样式设置器确实需要一个像jupyter这样的html前端,即使它只能格式化数字(而不是字体或颜色)。

例如,请参考此处使用Pandas Styler

为了将列转换为特定格式,应使用.map方法:

df = pd.DataFrame({'A': np.linspace(1, 5, 5)})
df = pd.concat([df, pd.DataFrame(np.random.randn(5, 1), columns=list('B'))],
               axis=1)

df['C']=df['B'].map("{:.2%}".format)

print(df, end='\n\n')
print(df.dtypes)

     A         B         C
0  1.0  1.329212   132.92%
1  2.0 -0.770033   -77.00%
2  3.0 -0.316280   -31.63%
3  4.0 -0.990810   -99.08%
4  5.0 -1.070816  -107.08%

A    float64
B    float64
C     object
dtype: object

缺点在于,df['C']不再是一个数字,因此您无法正确地对数据框进行排序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接