嵌套索引多索引数据帧

时间:2014-08-04 21:40:02

标签: python pandas

假设我有以下数据框df,其中三个级别为多索引:

                         A         B         C
X      Y     Z                          
bar   one    a   -0.007381 -0.365315 -0.024817
             b   -1.219794  0.370955 -0.795125
baz   three  a    0.145578  1.428502 -0.408384
             b   -0.249321 -0.292967 -1.849202
      two    a   -0.249321 -0.292967 -1.849202
      four   a    0.21     -0.967123  1.202234
foo   one    b   -1.046479 -1.250595  0.781722
             a    1.314373  0.333150  0.133331
qux   two    c    0.716789  0.616471 -0.298493
             b    0.385795 -0.915417 -1.367644

并说我有以下系列s,其中两个级别作为多索引(请注意它共享前两个级别):

              Flag
X      Y     
bar   one     True                 
baz   three  False
      two     True
      four    True
foo   one    False
qux   two     True

我想使用s填充df

                   A         B         C            F
X      Y     Z                          
bar   one    a   -0.007381 -0.365315 -0.024817   True
             b   -1.219794  0.370955 -0.795125   True
baz   three  a    0.145578  1.428502 -0.408384  False
             b   -0.249321 -0.292967 -1.849202  False
      two    a   -0.249321 -0.292967 -1.849202   True
      four   a    0.21     -0.967123  1.202234   True
foo   one    b   -1.046479 -1.250595  0.781722  False
             a    1.314373  0.333150  0.133331  False
qux   two    c    0.716789  0.616471 -0.298493   True
             b    0.385795 -0.915417 -1.367645   True

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这不会特别快,可能是更好的东西,但应该工作。有关更多背景信息,请参阅切片MultiIndex的docs

idx = pd.IndexSlice
for (lvl1, lvl2), value in s.iteritems():
    df.loc[idx[lvl1, lvl2, :], 'Flag'] = value