如果第一个索引是整数,我在使用pandas MultiIndex时遇到问题。 我找不到这个问题,所以也许我在这里做错了什么?
我使用pandas版本' 0.16.2'
示例:
在:
data2 = pd.DataFrame(np.random.rand(10),
index = [['a','a','a','a','b','b','b','b','c','c'],
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0]])
data2.ix[['b','c']]
出:
0
b 5 0.295579
6 0.691801
7 0.386504
8 0.602777
c 9 0.269147
0 0.029509
但是在第一个索引级别使用整数它似乎不起作用:
data = pd.DataFrame(np.random.rand(10),
index = [[ 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3],
['a','b','c','d','e','f','g','h','i','j']])
data.ix[[2,3]]
出:
0
1 c 0.437728
d 0.785359
答案 0 :(得分:1)
使用loc
代替ix
:
data = pd.DataFrame(np.random.rand(10),
index = [[ 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3],
['a','b','c','d','e','f','g','h','i','j']])
data.loc[[2,3]]
In [264]: data.loc[[2,3]]
Out[264]:
0
2 e 0.846643
f 0.200234
g 0.298223
h 0.766459
3 i 0.860181
j 0.980182
对于ix而言,由于docs而无法正常工作,这很奇怪:
但是,当轴基于整数时,仅支持基于标签的访问而非位置访问 因此,在这种情况下,通常最好是明确并使用.iloc或.loc。
您的索引值是整数,因此应将它们分析为标签:
In [271]: data.index.levels[0]
Out[271]: Int64Index([1, 2, 3], dtype='int64')
但他们建议在这种情况下使用loc
更明确。