有没有办法将 Pandas pivot_table 放入 Plotly table?

Is there a way to put a Pandas pivot_table into a Plotly table?

我有一个使用 Pandas pivot_table 创建的枢轴 table,我想在 Plotly table 中显示结果。我已成功填充索引列,但不确定如何填充其余值:

table = table.reset_index()

fig = go.Figure(data=[go.Table(
    header=dict(values=list(table.columns.tolist()),
                fill_color='paleturquoise',
                align='left'),
    cells=dict(values=[table['code']],
               fill_color='lavender',
               align='left'))
])

fig.show()

这是一个旋转的字典 table:

[{"code":44950,"ABBOTT NORTHWESTERN HOSPITAL":4546.2512817383,"CHILDREN'S HOSPITALS & CLINICS OF MN":7802.2425130208,"HENNEPIN COUNTY MEDICAL CENTER 1":869.4294606802,"PARK NICOLLET METHODIST HOSPITAL":null,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":7898.8365783691},{"code":70450,"ABBOTT NORTHWESTERN HOSPITAL":424.8267141707,"CHILDREN'S HOSPITALS & CLINICS OF MN":2264.7491921216,"HENNEPIN COUNTY MEDICAL CENTER 1":220.6921879649,"PARK NICOLLET METHODIST HOSPITAL":213.5044436985,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":343.2730032114},{"code":76805,"ABBOTT NORTHWESTERN HOSPITAL":367.9092678447,"CHILDREN'S HOSPITALS & CLINICS OF MN":6052.9498485268,"HENNEPIN COUNTY MEDICAL CENTER 1":159.4268743396,"PARK NICOLLET METHODIST HOSPITAL":248.8700002035,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":252.9390616784},{"code":77066,"ABBOTT NORTHWESTERN HOSPITAL":336.7092620511,"CHILDREN'S HOSPITALS & CLINICS OF MN":null,"HENNEPIN COUNTY MEDICAL CENTER 1":127.4571880102,"PARK NICOLLET METHODIST HOSPITAL":null,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":248.553898738},{"code":80048,"ABBOTT NORTHWESTERN HOSPITAL":89.2373663649,"CHILDREN'S HOSPITALS & CLINICS OF MN":170.8316176919,"HENNEPIN COUNTY MEDICAL CENTER 1":43.2383953318,"PARK NICOLLET METHODIST HOSPITAL":23.0844444699,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":45.4282953556},{"code":97110,"ABBOTT NORTHWESTERN HOSPITAL":102.2439455629,"CHILDREN'S HOSPITALS & CLINICS OF MN":83.8876704011,"HENNEPIN COUNTY MEDICAL CENTER 1":58.4574673764,"PARK NICOLLET METHODIST HOSPITAL":90.8655548096,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":69.6076442719},{"code":99203,"ABBOTT NORTHWESTERN HOSPITAL":440.9728189782,"CHILDREN'S HOSPITALS & CLINICS OF MN":200.125572077,"HENNEPIN COUNTY MEDICAL CENTER 1":143.6352518082,"PARK NICOLLET METHODIST HOSPITAL":null,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":null}]

如能提供有关如何执行此操作的任何帮助,我们将不胜感激。谢谢。

根据https://plotly.com/python/table/#styled-table,您可以放置​​多个元素,例如:

 cells=dict(values=[table['code'],
                    table['ABBOTT NORTHWESTERN HOSPITAL'],
                    table["CHILDREN'S HOSPITALS & CLINICS OF MN"],
                    table["HENNEPIN COUNTY MEDICAL CENTER 1"],
                    table["PARK NICOLLET METHODIST HOSPITAL"],
                    table["UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW"]],
               fill_color='lavender',
               align='left'))

但是如果你想为不同的数据重用你的代码并使其干净,那么你可以使用以下代码:

import plotly.graph_objects as go #plotly
import numpy as np #for reshape
#your data
data = [{"code":44950,"ABBOTT NORTHWESTERN HOSPITAL":4546.2512817383,"CHILDREN'S HOSPITALS & CLINICS OF MN":7802.2425130208,"HENNEPIN COUNTY MEDICAL CENTER 1":869.4294606802,"PARK NICOLLET METHODIST HOSPITAL":"null","UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":7898.8365783691},{"code":70450,"ABBOTT NORTHWESTERN HOSPITAL":424.8267141707,"CHILDREN'S HOSPITALS & CLINICS OF MN":2264.7491921216,"HENNEPIN COUNTY MEDICAL CENTER 1":220.6921879649,"PARK NICOLLET METHODIST HOSPITAL":213.5044436985,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":343.2730032114},{"code":76805,"ABBOTT NORTHWESTERN HOSPITAL":367.9092678447,"CHILDREN'S HOSPITALS & CLINICS OF MN":6052.9498485268,"HENNEPIN COUNTY MEDICAL CENTER 1":159.4268743396,"PARK NICOLLET METHODIST HOSPITAL":248.8700002035,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":252.9390616784},{"code":77066,"ABBOTT NORTHWESTERN HOSPITAL":336.7092620511,"CHILDREN'S HOSPITALS & CLINICS OF MN":"null","HENNEPIN COUNTY MEDICAL CENTER 1":127.4571880102,"PARK NICOLLET METHODIST HOSPITAL":"null","UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":248.553898738},{"code":80048,"ABBOTT NORTHWESTERN HOSPITAL":89.2373663649,"CHILDREN'S HOSPITALS & CLINICS OF MN":170.8316176919,"HENNEPIN COUNTY MEDICAL CENTER 1":43.2383953318,"PARK NICOLLET METHODIST HOSPITAL":23.0844444699,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":45.4282953556},{"code":97110,"ABBOTT NORTHWESTERN HOSPITAL":102.2439455629,"CHILDREN'S HOSPITALS & CLINICS OF MN":83.8876704011,"HENNEPIN COUNTY MEDICAL CENTER 1":58.4574673764,"PARK NICOLLET METHODIST HOSPITAL":90.8655548096,"UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":69.6076442719},{"code":99203,"ABBOTT NORTHWESTERN HOSPITAL":440.9728189782,"CHILDREN'S HOSPITALS & CLINICS OF MN":200.125572077,"HENNEPIN COUNTY MEDICAL CENTER 1":143.6352518082,"PARK NICOLLET METHODIST HOSPITAL":"null","UNIVERSITY OF MINNESOTA MEDICAL CENTER, FAIRVIEW":"null"}]

#get header of data
data_columns = list(data[0].keys())
#get values of data and put them in a list
data_values = list(i[j] for j in data_columns for i in data) # I used comprehension expression
#reshape the list because of plotly ordering type.
data_values = np.reshape(data_values, (-1, len(data))) 

#figure for plotly
fig = go.Figure(data=[go.Table(
    header=dict(values=data_columns,
                fill_color='paleturquoise',
                align='left'),
    cells=dict(values=data_values,
               fill_color='lavender',
               align='left'))
])

#show figure
fig.show()

输出图片