You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中让时间为00:00:00的列在jupyter/html中显示完整datetime

问题说明

若pandas DataFrame某一整列的datetime类型数据时间部分均为00:00:00,默认展示时会省略时间部分仅显示日期,该场景下容易让用户混淆列类型是date还是datetime。

复现代码

import pandas as pd
from datetime import datetime

df = pd.DataFrame([
        (datetime(2021,10,3,0,0,0), datetime(2021,10,3,1,1,1)),
        (datetime(2021,10,3,0,0,0), datetime(2021,10,3,1,1,1)),
])

df

查看实际存储的完整时间可以调用df.values,输出如下:

array([['2021-10-03T00:00:00.000000000', '2021-10-03T01:01:01.000000000'],
       ['2021-10-03T00:00:00.000000000', '2021-10-03T01:01:01.000000000']],
      dtype='datetime64[ns]')

Jupyter默认的DataFrame渲染逻辑调用df.to_html()实现,生成的表格同样会省略00:00:00部分:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2021-10-03</td>
      <td>2021-10-03 01:01:01</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2021-10-03</td>
      <td>2021-10-03 01:01:01</td>
    </tr>
  </tbody>
</table>

现有临时方案需要手动调用style渲染输出,需求是直接通过notebook常规单元格输出即可显示完整时间。

解决方案

方案1:全局配置pandas显示格式(推荐)

在notebook初始化时添加一行配置,统一所有datetime类型的显示格式,即可覆盖默认的省略逻辑:

import pandas as pd
pd.set_option('display.datetime_format', '%Y-%m-%d %H:%M:%S')

配置完成后,所有后续输出的DataFrame中的datetime列都会完整显示年月日时分秒,无需额外修改代码。

方案2:针对单个DataFrame自定义格式

如果不想修改全局配置,仅需要对特定DataFrame做格式控制,直接返回格式化后的style对象即可,无需手动调用display:

# 按列指定格式,列如果有名称可将数字键替换为列名
df.style.format({
    0: lambda x: x.strftime('%Y-%m-%d %H:%M:%S'),
    1: lambda x: x.strftime('%Y-%m-%d %H:%M:%S')
})

内容的提问来源于stack exchange,提问作者Thijs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:36:02