我在df中的一列上应用了style.format(添加逗号),但在第二次调用df之后,似乎style.format不是永久的?当我将style.format指定给一个变量并调用它时,它确实起作用。但是调用df.head(5)会给我AttributeError: 'Styler' object has no attribute 'head'
import pandas as pd
pd.set_option('display.max_rows', 10)
df = pd.read_excel('./resources/mycopy-copy.xlsx')
df <---#truncates here
df.style.format({'Number of Doses Procured': '{:,}'}) #or df = df.style.format({'Number of Doses Procured': '{:,}'})
df <---#spits out all 500 rows
简短的回答是:不,没有办法“将样式永久应用于
DataFrame
”Styling通常是呈现(作为HTML)之前的最后一步,尽管它可以通过链接组成
df.style.anyfunction()
的结果是一个Style
对象。因此,它没有DataFrame
的方法,特别是根据您的问题.head()
:{}对任何{}都一无所知。相反,是
Styler
引用了它最初用于的DataFrame
您可以将样式本身应用于另一个
DataFrame
(使用Styler.use()
和Styler.export()
,请参见下文)然而,遗憾的是,这似乎没有包括.format()
定义(至少在pandas=1.2.1
)这真的太糟糕了,因为在其他情况下,它使得为另一个DF重用样式变得非常容易(或者根据您的示例
df.head()
):注意:
assert vars(s)['data'] is df
。正如我上面所说的,Styler
对象有一个对它最初使用的DataFrame
的引用(data
)(因此,当要求它渲染时,它知道要渲染什么数据)现在,您可以使用
Styler
对象并将其应用于另一个DataFrame
(此处:df.head(3)
):正如您所看到的,除了格式化功能之外,所有的样式功能都被继承了!我认为这是一个错误或疏忽
相关问题 更多 >
编程相关推荐