如何切片熊猫.通用级别 l 的多索引



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

下面将索引 i 的值设置为级别 2(参见文档(:

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

有没有办法将索引 i 的值设置为级别 l(对于任何级别 l(?我需要这个,因为我不知道我需要在什么级别上操作。

我认为你需要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