在Pandas系列索引中附加一个级别

时间:2013-10-29 15:48:16

标签: python pandas

我正试图在Pandas系列中附加一个关卡。说创建一个简单的系列:

 series = pd.Series(range(10), index = list("ABCDEFGHIJ"))

series只有一个索引级别。我想添加第二个级别。使用DataFrame,您可以使用DataFrame.set_index来做到这一点。但是,如果不首先将我的系列转换为DataFrame,我提出的最简单的事情就是:

 index =  [np.array(["L2" for x in series.index]), np.array(series.index)]     
 series2 = pd.Series(series.tolist(), index = index)

series2现在有一个包含两个级别的多索引。

有没有更简单,更清洁的方法?

2 个答案:

答案 0 :(得分:3)

不确定这是否更清洁;有一个MultiIndex类可用于构建层次索引:

>>> import pandas as pd
>>> series = pd.Series(range(10), index = list("ABCDEFGHIJ"))

创建一个新对象,重用原始series索引:

>>> pd.Series(xrange(10), 
              pd.MultiIndex.from_tuples([('L2', a) for a in series.index]))
L2  A    0
    B    1
    C    2
    D    3
    E    4
    F    5
    G    6
    H    7
    I    8
    J    9
dtype: int64

或者也可以改变原地系列:

>>> import pandas as pd
>>> series = pd.Series(range(10), index = list("ABCDEFGHIJ"))
>>> series.index = pd.MultiIndex.from_tuples([('L2', a) for a in series.index])

或者只是从一个MultiIndex开始:

>>> import pandas as pd
>>> series = pd.Series(range(10), index=pd.MultiIndex.from_tuples(
                                        [('L2', x) for x in 'ABCDEFGHIJ']))

答案 1 :(得分:2)

一种简单的方法(就地)是:

<h3>Username: {{ user->username }}</h3> <h3>Username: {{ review->number_review }}</h3>

编辑还有另一种方法可以做同样的事情(不是在地方):

series.index = pd.MultiIndex.from_product([['L2'], series.index])