我创建了一个带有多索引的数据框,其中一个索引是一个元组。我无法使用 .loc 进行索引。
这是数据框:
a = [['a','a','a','b','b','b','c','c'],[('one',2),('one',1),('two',1),('two',1),('two',2),('one',2),('two',2),('one',1)]]
t_index=pd.MultiIndex.from_tuples(list(zip(*a)),names=['letters','numbers'])
b=[1,4,3,5,7,2,6,1]
df=pd.DataFrame({'position':b},t_index)
print(df)
position
letters numbers
a (one, 2) 1
(one, 1) 4
(two, 1) 3
b (two, 1) 5
(two, 2) 7
(one, 2) 2
c (two, 2) 6
(one, 1) 1
当我尝试使用 .loc 访问时,出现以下错误:
df.loc[('a',('one',2))]
"None of [('one', 2)] are in the [columns]"
除非真的不推荐,否则我更喜欢将“数字”索引保留为元组而不是两个值。有人可以指出我哪里出错了,或者我应该怎么做才能访问索引?
最佳答案
您可以使用loc
+ xs
df.loc['a'].xs(('one',2))
或者:
df.xs(['a', ('one',2)],level=[0,1])
或者(更直观)
df.xs(['a', ('one',2)],level=['letters','numbers'])
输出:
position
letters numbers
a (one, 2) 1
关于python - 将其中一个索引作为元组的 MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596554/