簡體   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