我正在使用Python3、水瓶和Dash进行一个项目。我正在使用来自DataTable()的dash_table可视化一个CSV表,并希望突出显示一些特定的单元格。
对于表样式的文档,可以使用style_data_conditional属性在DataTable定义(参考文献)中完成。
我的CSV表如下所示:
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当尝试访问第一列时,所有样式更改都正常工作。
[...]
style_data_conditional=[
{
'if': {
'column_id': 'hostname',
'filter_query': '{hostname} eq "testclient"'
},
'color': 'green',
}
],
[...]但是当尝试访问任何其他行列(如"ftp“或"http”)时,它将无法工作,而且即使我在app.run(...)函数调用中使用了app.run(...)参数,也不会得到错误输出。
[...]
style_data_conditional=[
{
'if': {
'column_id': 'ftp',
'filter_query': '{ftp} eq "True"'
},
'color': 'green',
}
],
[...]在DataTable中有一个“样式”属性的顺序.
..。但是如您所见,给定的样式属性是清单中提到的第一个属性。
表的定义如下:
content = dash_table.DataTable(
id='table',
columns=[{"name": i, "id": i} for i in df.columns],
[...]你有什么线索吗,为什么DataTable通过改变column_id就表现得那么奇怪
发布于 2020-05-08 17:48:24
由于您没有在csv示例中提供列标题,所以我只能假设ftp和http引用布尔列?
Dash DataTables中对布尔型列的支持似乎介于有限的和不存在的之间。filter_query表达式似乎不适用于布尔值。文档甚至没有提到列的布尔数据类型:
列(dict;可选):
为此,我将数据中所有布尔列的数据类型设置为str。
for col, dtype in df.dtypes.items():
if dtype == 'bool':
df[col] = df[col].astype('str')然后,条件样式按预期工作:
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',
}
]
)

https://stackoverflow.com/questions/60125805
复制相似问题