两者之间有区别
- 数据帧单元的内容(二进制值)和
- 它对我们(人类)的演示(展示)。
所以问题是:如何在不更改数据/数据类型本身的情况下达到我的数据的适当表示?
答案是:
- 如果您使用Jupyter笔记本显示数据框,或者
- 如果您想以HTML文件的形式进行演示(即使准备了许多多余的属性
id
和class
属性来进行进一步的 CSS样式设置,则可以使用也可以不使用它们),
使用样式。样式不会更改数据框列的数据/数据类型。
现在,我向您展示如何在Jupyter笔记本中找到它-有关HTML文件形式的演示文稿,请参阅问题末尾的注释。
我将假设您的列DOB
已经具有该类型datetime64
(您已表明知道如何访问它)。我准备了一个简单的数据框(只有一列),向您展示了一些基本样式:
DOB
0 2019-07-03
1 2019-08-03
2 2019-09-03
3 2019-10-03
DOB
0 07/03/2019
1 08/03/2019
2 09/03/2019
3 10/03/2019
DOB
0 03-07-2019
1 03-08-2019
2 03-09-2019
3 03-10-2019
小心!
返回的对象不是数据框-它是类的对象Styler
,因此请勿将其分配回df
:
不要这样做:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(每个数据框都可以通过其.style
属性访问其Styler对象,我们更改了该df.style
对象,而不是数据框本身。)
问题和解答:
问: 为什么在Jupyter笔记本单元格中用作最后一条命令的Styler对象(或返回它的表达式)显示您的(样式化)表,而不显示Styler对象本身?
答:因为每个Styler对象都有一个回调方法._repr_html_()
,该方法返回用于呈现数据框的HTML代码(作为漂亮的HTML表)。
Jupyter Notebook IDE 自动调用此方法以呈现具有此方法的对象。
注意:
您不需要Jupyter笔记本进行样式设置(即,在不更改数据/数据类型的情况下很好地输出数据框)。
render()
如果您想使用HTML代码获取字符串(例如,用于将格式化的数据帧发布到Web上,或仅以HTML格式显示表格),则Styler对象也具有一种方法:
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()