Pandas:如何折叠返回聚合值的分类列

时间:2016-05-06 17:48:32

标签: python pandas

我试图做一些有点违反直觉的事情。在下面的可重复示例中应该清楚的问题是,我试图折叠一列分类值,同时返回其他列的聚合值。

raw_data = {
        'id': ['4', '5', '6', '7'],
        'score1': ['1', '2', '4', '0'], 
        'score2': ['3', '4', '11', '0'], 
        'time1': ['7.3', '2.4', '0.0', '0.3'], 
        'time2': ['4.3', '5.4', '1.0', '0.0']}
df = pd.DataFrame(raw_data, columns = ['id', 'score1', 'score2', 'time1', 'time2'])
df 

    id  score1  score2   time1  time2
0   4       1       3    7.3    4.3
1   5       2       4    2.4    5.4
2   6       4       11   0.0    1.0
3   7       0       0    0.3    0.0

从这个数据框中我试图返回一行pandas HTML表格,显示:

  1. score1
  2. 的总和
  3. score2
  4. 的总和
  5. time1
  6. 的平均值
  7. time2
  8. 的中位数

    理想情况下,id列会显示all之类的内容。事件发生后,这个值当然可以很容易地改变。

    单行HTML表格如下所示:

    id    score1  score2   time1  time2
    All   7       18       2.5    2.7
    

    这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

可以做类似的事情:

df = df.astype('float64')
tmp = pd.DataFrame([{"score1": df.score1.sum(), "score2":df.score2.sum(), "time1":df.time1.mean(), "time2":df.time2.median()}])
out = tmp.to_html(index=False)

给出了这样的表格

<table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">     <th>score1</th>     <th>score2</th>      <th>time1</th>     <th>time2</th>   </tr> </thead>  <tbody>   <tr>      <td>7</td>     <td>18</td>      <td>2.5</td>      <td>2.65</td>    </tr>  </tbody></table>