将数据框列名列表传递给 Plotly Express Treemap

Passing a list of dataframe column names to Plotly Express Treemap

我正在尝试在 Plotly Express 中创建树状图。如果我手动输入列名,则会创建树状图。传递相同列名的列表会引发 ValueError。

基本上我有一个列名为 3,4,5,6,7,8,9,10 的数据框

因为这些列名称会因数据而异,所以我想将它们作为列表传递给 Plotly express。

按照以下方式手动输入它们,将有效

treemap_fig = px.treemap(df_split_folders, path=[px.Constant("Chart Title"), 3,4,5,6,7,8,9,10],values='count', color_discrete_sequence=px.colors.qualitative.Antique)

但不会将它们作为列表传递。例如

# create list of column names from dataframe
total_cols = df_split_folders.columns.values.tolist()

#pass as a list
treemap_fig = px.treemap(df_split_folders, path=[px.Constant("Chart Title"), 3,4,5,6,7,8,9,10],values='count', color_discrete_sequence=px.colors.qualitative.Antique)

我也尝试过将列名列表转换为字符串,但没有成功。

编辑:这是一个最小可重现的例子:

import pandas as pd
import plotly.express as px

# dictionary with list object in values
details = {
    'url' : ['/category', '/category', '/product', '/product'],
    'folder' : ['/games', '/playstation', '/cars', '/cycling'],
    'type' : ['adventure', 'action', 'action', 'adventure'],
}

df = pd.DataFrame(details, index = ['a', 'b', 'c', 'd'])
df['count'] = 1

treemap_fig = px.treemap(df, path=[px.Constant("Discovered / Crawled Not Indexed"), 'url', 'folder', 'type'], values='count', color_discrete_sequence=px.colors.qualitative.Antique)
treemap_fig.show()

此代码按预期工作并生成树状图,但是 - 如果我尝试将列名作为变量传递,它不再引用数据框列名。例如

cols = 'url', 'folder', 'type'

treemap_fig = px.treemap(df, path=[px.Constant("Discovered / Crawled Not Indexed"), **cols**], values='count', color_discrete_sequence=px.colors.qualitative.Antique)
    treemap_fig.show()

要扩展列变量,您可以使用星号来扩展它。 details.

请参考官方参考
cols = 'url', 'folder', 'type'

treemap_fig = px.treemap(df, 
                         path=[px.Constant("Discovered / Crawled Not Indexed"), *cols],
                         values='count',
                         color_discrete_sequence=px.colors.qualitative.Antique)

treemap_fig.show()