如何用plotly.go.Table自动筛选DataFrame特定列生成表格
解决Plotly Go表格仅展示指定DataFrame列的问题
你遇到的IndexError是因为df.columns是Pandas的Index对象,它不支持直接用字符串列表做索引——Index仅接受整数、切片(:)、布尔数组等类型的索引值。同时你原代码中给values套了外层[],导致传入了嵌套结构,也会引发异常。
以下是两种可行的解决方案:
方法一:先筛选子DataFrame(直观易维护)
先定义要展示的列名列表,从原DataFrame中提取对应的子数据集,再用子数据集的列和内容生成表格:
import plotly.graph_objects as go # 定义需要展示的列 target_columns = ['Block Number', 'Base Token'] # 提取仅包含目标列的子DataFrame df_filtered = df[target_columns] # 生成Plotly表格 fig_positions = go.Figure(data=go.Table( header=dict(values=list(df_filtered.columns)), # 将列名转为列表传入 cells=dict(values=[df_filtered[col] for col in df_filtered.columns]) # 对应列的数据 )) # 渲染表格 fig_positions.show()
方法二:直接使用列名列表(简洁高效)
无需提前生成子DataFrame,直接用目标列名列表构造表格的header和cells:
import plotly.graph_objects as go target_columns = ['Block Number', 'Base Token'] fig_positions = go.Figure(data=go.Table( header=dict(values=target_columns), cells=dict(values=[df[col] for col in target_columns]) )) fig_positions.show()
关键注意点
- 不要给
values参数套额外的外层列表,它需要的是一维的列名/数据列表。 - 若需要动态调整展示列,只需修改
target_columns列表即可,无需逐个修改代码中的列名引用。
内容的提问来源于stack exchange,提问作者Luiz Scheuer
相关产品推荐
相关产品推荐

