5

Pandas シリーズにレベルを追加しようとしています。シンプルなシリーズを作成するとします。

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

seriesインデックス レベルは 1 つです。セカンドレベルを追加したい。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 つのレベルを持つ multiindex があります。

これに対するより簡単でクリーンなアプローチはありますか?

4

2 に答える 2

4

これがずっときれいかどうかはわかりません。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']))
于 2013-10-29T15:58:29.130 に答える