如何在通用级别l上切片pandas.MultiIndex?

时间:2019-02-08 19:04:52

标签: python pandas

df.xs(i, level=l)获取级别l的索引i的值,但不允许设置它们。

以下内容将索引i的值设置为级别2 (cf. documentation)

df.loc[pd.IndexSlice[:,:,i],:] = 0

是否有一种方法可以将索引i的值设置为级别l(对于任何级别l)?我需要这个,因为我事前不知道需要在哪个级别上进行操作。

1 个答案:

答案 0 :(得分:2)

我认为您需要pd.index.get_level_values

import pandas as pd
import numpy as np

np.random.seed(123)
df = pd.DataFrame(np.random.randint(1,50,(100,8))).set_index(list(range(5)))

i = 7

l = 2
df.loc[df.index.get_level_values(l) == i]
#               5   6   7
#0  1  2 3  4            
#15 12 7 36 24  6  48  41

l = 4
df.loc[df.index.get_level_values(l) == i]
#                5  6   7
#0  1  2  3  4           
#22 31 21 32 7  33  8  14