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

使用Python Shiny展示DataFrame时的日期显示异常问题求助

Python Shiny DataGrid日期显示异常解决方案

问题分析

你遇到的问题是pandas控制台中日期显示正常,但在Python Shiny的DataGrid里显示异常,核心原因是Shiny前端渲染时对pandas datetime类型的格式化规则和控制台不同,需要明确指定日期显示格式。

解决方案

方法1:读取Excel时确保日期解析正确 + 在DataGrid中指定列格式

首先,替换xlrd为openpyxl(xlrd仅支持旧版.xls格式,对.xlsx的日期解析存在局限性),然后在render.DataGrid中通过columns参数为日期列指定显示格式:

from shiny.express import input, render, ui
import pandas as pd

# 使用openpyxl引擎读取Excel,确保日期正确解析为datetime类型
df_patient = pd.read_excel(
    r"C:\Users\rdesb\OneDrive\Bureau\MyAPP\dashboard\db_patient.xlsx", 
    index_col="Indice",
    engine="openpyxl"
)

ui.page_opts(title="DashBoard Plume", fillable=True)

with ui.nav_panel("Informations Patients"):
    ui.h2("Informations Patients")
    @render.data_frame  
    def patients_df():
        # 为日期列指定显示格式,这里假设日期列名为"Date de naissance"
        return render.DataGrid(
            df_patient,
            columns=[
                {
                    "name": "Date de naissance",
                    "format": {"date": {"format": "dd-MM-yyyy"}}
                }
                # 其他列如果不需要特殊格式可以省略,会自动继承默认规则
            ]
        )  

with ui.nav_panel("Plot2"):
    with ui.layout_columns():  
        with ui.card():  
            ui.card_header("Card 1 header")
            ui.p("Card 1 body")
        with ui.card():  
            ui.card_header("Card 2 header")
            ui.p("Card 2 body")

方法2:预处理日期列为指定格式的字符串

如果方法1不生效,可以先将datetime类型的日期列转换为你需要的字符串格式,再传入DataGrid:

# 在读取数据后添加这行代码,将日期列转为"dd-mm-yyyy"格式的字符串
df_patient["Date de naissance"] = df_patient["Date de naissance"].dt.strftime("%d-%m-%Y")

# 后续渲染代码不变,直接传入处理后的DataFrame
@render.data_frame  
def patients_df():
    return render.DataGrid(df_patient)

为什么之前的尝试没生效?

  • 使用xlrd读取.xlsx文件时,日期解析可能存在兼容性问题,导致Shiny无法正确识别日期类型;
  • 直接将Excel中的日期转为字符串再用pd.to_datetime转换,若没有确保转换后的datetime类型正确(比如时区问题),反而会让Shiny前端的格式化逻辑混乱;
  • Shiny的DataGrid不会自动继承pandas的日期显示格式,必须明确指定前端渲染规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:25