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