如何打印 pandas.io.formats.style.Styler 对象

How to print a pandas.io.formats.style.Styler object

我有以下生成 pandas.io.formats.style.Styler 对象的代码:

import pandas as pd
import numpy as np

df = pd.DataFrame({'text': ['foo foo', 'bar bar'],
                 'number': [1, 2]})

df1 = df.style.set_table_styles([dict(selector='th', props=[('text-align', 'center')])])
df2 = df1.set_properties(**{'text-align': 'center'}).hide_index()
df2   # df2 is a pandas.io.formats.style.Styler object

如果我在上面的脚本下面有更多代码 运行,我该如何打印 df2,例如:

import pandas as pd
import numpy as np

df = pd.DataFrame({'text': ['foo foo', 'bar bar'],
                 'number': [1, 2]})

df1 = df.style.set_table_styles([dict(selector='th', props=[('text-align', 'center')])])
df2 = df1.set_properties(**{'text-align': 'center'}).hide_index()
df2

np.round(0.536, 2)

我尝试使用 print 语句,但它给我的输出如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({'text': ['foo foo', 'bar bar'],
                 'number': [1, 2]})

df1 = df.style.set_table_styles([dict(selector='th', props=[('text-align', 'center')])])
df2 = df1.set_properties(**{'text-align': 'center'}).hide_index()
print(df2)

np.round(0.536, 2)
<pandas.io.formats.style.Styler object at 0x000000000B4FAFC8>
0.54

任何帮助将不胜感激。非常感谢。

set_properties 方法用于创建应用于数据框的样式。如果你想在更改属性后检查数据框样式,你只需要打印你更改的数据框。

在你的例子中你应该这样做:

import pandas as pd

df = pd.DataFrame({'text': ['foo foo', 'bar bar'],
                 'number': [1, 2]})

df.style.set_properties(**{'text-align': 'center'})

print(df)

方法 set_properties returns 是 Styler,不是数据框。您可以查看文档 here.

我找到了答案:

import pandas as pd
from IPython.display import display
import numpy as np

df = pd.DataFrame({'text': ['foo foo', 'bar bar'],
                 'number': [1, 2]})

df1 = df.style.set_table_styles([dict(selector='th', props=[('text-align', 'center')])])
df2 = df1.set_properties(**{'text-align': 'center'}).hide_index()
display(df2)

np.round(0.536, 2)

这将在您的浏览器中显示 df, styler 也有 .to_html() 方法

import webbrowser
import pandas as pd

d={
    "id":[22,23,24,25,26,27,28],
    "a":[1,2, 3, 4, 5, 6, 7],
    "b":[1,2, 3, 4, 5, 6, 7] 
}

df = pd.DataFrame(d)

with open('str.html','w') as f:
    df.to_html(f)

filename = ' str.html'
webbrowser.open_new_tab(filename)