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

Pandas样式设置:保留Timedelta列天数格式+隐藏索引+添加超链接

解决Jupyter中Pandas DataFrame样式冲突问题

问题场景

在Jupyter Notebook中展示Pandas DataFrame时,需要实现三个需求:

  • 隐藏DataFrame的索引
  • 将api_id列的URL转为可点击的超链接
  • Timedelta列以天数格式显示

默认状态下Timedelta列显示正常,但添加前两项样式设置后,该列会自动变为时分秒格式,常规数值列的格式化方法无法解决此问题。

解决方案

核心思路是显式指定Timedelta列的格式化规则,避免Pandas自动使用HTML默认格式化逻辑。修改后的完整代码如下:

import pandas

# 生成可点击超链接的函数
def make_hyperlink(val):
    return f'<a target="_blank" href="{val}">&#128279;</a>'

# 将Timedelta格式化为天数的函数
def format_timedelta(val):
    return f"{val.days} days"

# 构造测试数据
data = {
"count": [],
"api_id": [],
"Timedeltas": []
}
for i in range(10):
    data["count"].append(i)
    data["api_id"].append(f"/some_url/{i}")
    data["Timedeltas"].append(pandas.Timedelta(days=i))

df = pandas.DataFrame(data)

# 同时配置多列样式规则并隐藏索引
df.style.format(formatter={
    'api_id': make_hyperlink,
    'Timedeltas': format_timedelta
}).hide_index()

关键说明

  • 当使用style.format()指定部分列的格式化时,未指定的列会触发Pandas的HTML默认格式化逻辑,这就是Timedelta列格式变化的根源。
  • 通过给formatter字典添加Timedelta列的专属格式化函数,直接提取Timedelta对象的days属性并转为带单位的字符串,就能保持需求的显示格式。
  • 最后调用hide_index()实现索引隐藏,三个需求可同时满足。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:54:32