首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dash DataTable使用style_data_conditionals的个别突出显示不寻常

Dash DataTable使用style_data_conditionals的个别突出显示不寻常
EN

Stack Overflow用户
提问于 2020-02-08 10:14:17
回答 1查看 6.7K关注 0票数 3

我正在使用Python3、水瓶和Dash进行一个项目。我正在使用来自DataTable()dash_table可视化一个CSV表,并希望突出显示一些特定的单元格。

对于表样式的文档,可以使用style_data_conditional属性在DataTable定义(参考文献)中完成。

我的CSV表如下所示:

代码语言:javascript
运行
复制
testclient, 0.40, 0.48, False, False, False, 0.14, True, True, 0.0, 2
raspberrypi, 0.20, 0.21, False, True, False, 0.18, True, False, 0.0, 3

当尝试访问第一列时,所有样式更改都正常工作。

代码语言:javascript
运行
复制
[...]
style_data_conditional=[
    {
        'if': {
            'column_id': 'hostname',
            'filter_query': '{hostname} eq "testclient"'
        },
        'color': 'green',
    }
],
[...]

但是当尝试访问任何其他行列(如"ftp“或"http”)时,它将无法工作,而且即使我在app.run(...)函数调用中使用了app.run(...)参数,也不会得到错误输出。

代码语言:javascript
运行
复制
[...]
style_data_conditional=[
    {
        'if': {
            'column_id': 'ftp',
            'filter_query': '{ftp} eq "True"'
        },
        'color': 'green',
    }
],
[...]

DataTable中有一个“样式”属性的顺序.

  1. style_data_conditional
  2. style_data
  3. style_filter_conditional
  4. style_filter
  5. style_header_conditional
  6. style_header
  7. style_cell_conditional
  8. style_cell

..。但是如您所见,给定的样式属性是清单中提到的第一个属性。

表的定义如下:

代码语言:javascript
运行
复制
content = dash_table.DataTable(
    id='table',
    columns=[{"name": i, "id": i} for i in df.columns],
    [...]

你有什么线索吗,为什么DataTable通过改变column_id就表现得那么奇怪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-08 17:48:24

由于您没有在csv示例中提供列标题,所以我只能假设ftp和http引用布尔列?

Dash DataTables中对布尔型列的支持似乎介于有限的和不存在的之间。filter_query表达式似乎不适用于布尔值。文档甚至没有提到列的布尔数据类型:

列(dict;可选):

  • 类型(等于:'any‘、’数值‘、'text’、'datetime';可选):列数据的数据类型。

为此,我将数据中所有布尔列的数据类型设置为str

代码语言:javascript
运行
复制
for col, dtype in df.dtypes.items():
    if dtype == 'bool':
        df[col] = df[col].astype('str')

然后,条件样式按预期工作:

代码语言:javascript
运行
复制
DataTable(
    [...],
    style_data_conditional=[
        {
            'if': {
                'column_id': 'hostname',
                'filter_query': '{hostname} eq "testclient"'
            },
            'backgroundColor': 'green',
        },
        {
            'if': {
                'column_id': 'ftp',
                'filter_query': '{ftp} eq "True"'
            },
            'backgroundColor': 'green',
        }
    ]
)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60125805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档