Python 使用多索引访问数据帧时出现KeyError

Python 使用多索引访问数据帧时出现KeyError,python,python-2.7,pandas,Python,Python 2.7,Pandas,Apandas.DataFrame创建了多索引,如图所示: import pandas as pd import numpy as np df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(), 'B': 'one one two three three two four three'.split(), 'C': np.arange(8), 'D

A
pandas.DataFrame
创建了多索引,如图所示:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three three two four three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})

df = df.set_index(['A','B'])
这将创建一个“数据帧”:

           C   D
A   B           
foo one    0   0
bar one    1   2
foo two    2   4
bar three  3   6
foo three  4   8
bar two    5  10
foo four   6  12
    three  7  14
问题:当尝试使用
df['foo']
进行选择时,为什么会出现
键错误:“foo'
?类似地,
df['foo',one']
df['foo']['one']

此外,多重索引没有将所有的
foo
s分组在
A
下?是否有必要将它们组合在一起,例如:

          A         B
one 1 -0.732470 -0.313871
    2 -0.031109 -2.068794
    3  1.520652  0.471764
two 1 -0.101713 -1.204458
    2  0.958008 -0.455419
    3 -0.191702 -0.915983

df['foo']
尝试选择列
foo
,并因此生成
KeyError
,因为没有
foo
列。我猜你是想做
df.loc['foo']
df.loc['foo','one']
,谢谢
df.loc['foo','one']
还返回一条警告
性能警告:索引超过lexsort深度可能会影响性能。
。我们应该担心吗?