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

如何在Plotly Dash表格中自定义展示DataFrame指定列?

解决方案:Plotly Dash表格自定义展示指定列

你的问题核心是未将自定义列配置传递给表格组件,且仍返回了全量列数据。以下是两种可行的修改方案:

方案一:同时输出data和columns(推荐)

修改回调函数的输出目标,同时控制表格的data和columns属性,只保留需要展示的5列:

@app.callback(
    [Output('table', 'data'), Output('table', 'columns')],  # 新增columns的输出项
    Input('date_dd', 'value')
)
def update_table(selection):
    if len(selection) == 0:
        return dash.no_update, dash.no_update  # 对应两个输出的无更新返回

    else:    
        # 定义需要展示的目标列
        target_columns = ['Columns1','Columns2','Columns3','Columns4','Columns5']
        # 直接筛选目标列,减少不必要的数据处理
        dff = df[df['Settlement_Date'] == selection][target_columns]  
        
        # 生成表格列配置
        columns = [{'name': col, "id": col} for col in target_columns]
        # 生成对应列的数据字典
        data = dff.to_dict('records')

        return data, columns

方案二:仅修改data(需配合表格初始配置)

如果不想调整回调输出结构,可在生成data时只保留目标列,同时在表格组件初始化时固定列配置:

  1. 回调函数修改:
@app.callback(
    Output('table', 'data'), 
    Input('date_dd', 'value')
)
def update_table(selection):
    if len(selection) == 0:
        return dash.no_update

    else:    
        target_columns = ['Columns1','Columns2','Columns3','Columns4','Columns5']
        dff = df[df['Settlement_Date'] == selection][target_columns]  
        data = dff.to_dict('records')

        return data
  1. 表格组件初始化时指定列:
dash_table.DataTable(
    id='table',
    columns=[{'name': col, 'id': col} for col in ['Columns1','Columns2','Columns3','Columns4','Columns5']]
)

原代码失效原因

你之前仅修改了columns变量,但未将其作为输出传递给表格组件,同时data仍返回全量列数据,导致表格依旧显示所有列。只有让表格的columns属性与data中的字段一一对应,才能精准控制显示列数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:45:39