2
シリーズ/ DATAFRAMEパンダする:(固定値)のレベルを付加すると、以下のようにIマルチインデックスを持つパンダシリーズを有する
import pandas as pd
import numpy as np
idx = pd.MultiIndex.from_product([['A','C'],range(5)], names=['category_1','number'])
np.random.seed(0)
s = pd.Series(index=idx, data = np.random.randn(len(idx)))
I:
category_1 number
A 0 1.764052
1 0.400157
2 0.978738
3 2.240893
4 1.867558
C 0 -0.977278
1 0.950088
2 -0.151357
3 -0.103219
4 0.410599
これは、このコードから生成されます
category_1 category_2 number
A D 0 1.764052
1 0.400157
2 0.978738
3 2.240893
4 1.867558
C D 0 -0.977278
1 0.950088
2 -0.151357
3 -0.103219
4 0.410599
:別のレベルを追加したい、次の結果を持っている固定値(すなわち
D
)とインデックスに
category_2
と呼ばれます私はこれを行うには、このハックの方法を使用している
:
df =s.to_frame('dummy')
df['category_2'] = 'D'
df.set_index('category_2', append = True, inplace = True)
df = df.reorder_levels([0,2,1])
res = df['dummy']
パンダシリーズ/データフレーム上の既存のレベルに固定値とレベルを追加するためのより良い(より簡潔/神託)方法はありますか?
おかげで、別の方法はfrom_productを使用することです:s.index = pd.MultiIndex.from_product([s.inde – motam79
ニース、私のために 's.index = pdが動作します。x.levels [0]、 'D'、s.index.levels [1]]、names = ['c1'、 'c2'、 'number']) MultiIndex.from_product([s.index.levels [0]、['D']、s.index.levels [1]]、names = ['c1'、 'c2'、 'number']) ' – jezrael