如何在pandas系列的reset_index中添加多个列

时间:2017-02-16 18:15:26

标签: python-3.x pandas

我有一个熊猫系列&我需要以HTML格式在电子邮件正文中嵌入以柱状方式显示它的元素.Hence在下面的片段中尝试过。它最初有两个列,但我现在有三列要显示。这是代码 -

a = max_compare.rename_axis('Metric').reset_index(name='Yesterday').to_html()

这里max_compare是低于输出的系列 -

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Metric</th>
      <th>Yesterday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>GSV</td>
      <td>4424180.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Units</td>
      <td>7463.0</td>
    </tr>
  </tbody>
</table>

现在我要在列中显示另一个元素。试过下面的代码片段,但是异常。

a =max_compare.rename_axis('Metric').reset_index(name=['Yesterday'],[L30 average]).to_html()

HTML中的当前输出 输出 - Added Image for current & expected output in HTML table format

1 个答案:

答案 0 :(得分:1)

由于您未提供任何数据样本或预期结果,因此我不确切地知道您想要做什么。但是,这是重置MultiIndex的方法。

  

level:int,str,tuple或list,默认为None   仅从索引中删除给定的级别。默认情况下删除所有级别

Link to the documentation

import pandas as pd
import io

# Paste the text by using of triple-quotes to span String literals on multiple lines
zz = """index grade   class   numgrade  numyear
0   A      Senior        12         4
1   A      Junior        12         3
2   A      Junior        12         3
3   A      Senior        12         4
4   A      Junior        12         3
"""

df = pd.read_table(io.StringIO(zz), delim_whitespace=True)
df.set_index(['index', 'grade'], inplace=True)
# Reset the two levels
df.reset_index(level=(0,1))

修改

Series可以使用相同的方法。但重置MultiIndex的{​​{1}}会将其转换回Series,因为根据定义,DataFrame只有一列(一个值)和一个索引。因此,如果您想处理多个列,我认为您应该使用Series

DataFrame