繁体   English   中英

将级别附加到熊猫系列指数

[英]Appending a level to a Pandas Series Index

我试图将一个关卡添加到“熊猫系列”中。 说一个创建简单的系列:

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

series具有单个索引级别。 我想添加第二个级别。 有了DataFrame,您可以使用DataFrame.set_index进行一些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具有一个具有两个级别的多series2

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

不确定这是否更干净; 有一个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']))

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

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

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

series2 = pd.concat([series], keys=['L2'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM