df.xs(i, level=l)
获取级别l的索引i的值,但不允许设置它们。
以下内容将索引i的值设置为级别2 (cf. documentation):
df.loc[pd.IndexSlice[:,:,i],:] = 0
是否有一种方法可以将索引i的值设置为级别l(对于任何级别l)?我需要这个,因为我事前不知道需要在哪个级别上进行操作。
答案 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