Python 使用多索引访问数据帧时出现KeyError
APython 使用多索引访问数据帧时出现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
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深度可能会影响性能。
。我们应该担心吗?