[英]query pandas dataframe with integer in first level of multiindex
如果第一個索引是整數,我會遇到熊貓MultiIndex問題。 我找不到這個問題,所以也許我在這里做錯了嗎?
我使用的是熊貓版本“ 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
使用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
以便更明確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.