python - 如何将 Python 字典转换为 html 表?

标签 python html pandas dictionary

我有这个 python 字典作为输出。

{'Job1': {'2017-01-10': [44, 33, 11, 75, 22]}, 
'Job 2': {'2017-01-05': [25, 25, 0, 100, 25], '2017-01-10': [50, 50, 0, 100, 25]}, 
'Job 3': {'2017-01-03': [44, 22, 22, 50, 22], '2017-01-04': [66, 36, 30, 54, 22], '2017-01-06': [88, 52, 36, 59, 22], '2017-01-10': [132, 68, 64, 51, 22], '2017-01-02': [22, 9, 13, 40, 22], '2017-01-08': [110, 52, 58, 47, 22]},
 'Job4': {'2017-01-10': [25, 25, 0, 100, 25]}}

其中日期是动态列表,如
我有静态工作 list 。

我怎么能像下图那样转换这个字典。
PS-从日期字典中捕获的第一个元素。
    1/2/2017 1/3/2017   1/4/2017    1/5/2017    1/6/2017    1/7/2017    1/8/2017    1/9/2017    1/10/2017
Job 1                                                                                             44
Job 2                                 25                                                          50
Job 3   22         44          66         88         110        132
Job 4                                                                                                 25

最佳答案

你可以像这样用 Pandas 来做到这一点:

import pandas as pd

a = {'Job1': {'2017-01-10': [44, 33, 11, 75, 22]}, 
'Job2': {'2017-01-05': [25, 25, 0, 100, 25], '2017-01-10': [50, 50, 0, 100, 25]}, 
'Job3': {'2017-01-03': [44, 22, 22, 50, 22], '2017-01-04': [66, 36, 30, 54, 22], '2017-01-06': [88, 52, 36, 59, 22], '2017-01-10': [132, 68, 64, 51, 22], '2017-01-02': [22, 9, 13, 40, 22], '2017-01-08': [110, 52, 58, 47, 22]},
 'Job4': {'2017-01-10': [25, 25, 0, 100, 25]}}
df = pd.DataFrame(data=a)
df = df.fillna(' ').T
df

输出:

enter image description here

如果您只想要列表的第一个元素:
df = df.applymap(lambda x: x[0] if type(x)==list else x)
df

enter image description here

如果要将其转换为 HTML 表格,可以使用 .to_html()像这样的方法:
print df.to_html()

输出:
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>2017-01-02</th>
      <th>2017-01-03</th>
      <th>2017-01-04</th>
      <th>2017-01-05</th>
      <th>2017-01-06</th>
      <th>2017-01-08</th>
      <th>2017-01-10</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Job1</th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td>44</td>
    </tr>
    <tr>
      <th>Job2</th>
      <td></td>
      <td></td>
      <td></td>
      <td>25</td>
      <td></td>
      <td></td>
      <td>50</td>
    </tr>
    <tr>
      <th>Job3</th>
      <td>22</td>
      <td>44</td>
      <td>66</td>
      <td></td>
      <td>88</td>
      <td>110</td>
      <td>132</td>
    </tr>
    <tr>
      <th>Job4</th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td>25</td>
    </tr>
  </tbody>
</table>

关于python - 如何将 Python 字典转换为 html 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671436/

相关文章:

python - 使用 Pandas 逐 block 计算数据库 block 的值

python - reshape DataFrame 列

python - 不循环计算值

python 查找函数的类型

javascript - 如果不包含则隐藏另一个 div

javascript - 如何弹出一个包含星级评级系统的窗口,以便用户可以输入他的评级

html - Chrome 中带有 HTML 选择的奇怪行为

python - 列表子集的函数列表

python - Pandas 比较一个 DataFrame 和一个 ground truth DataFrame

python - 为什么 numpy 比 for 循环慢