簡體   English   中英

在第一級多索引中查詢帶有整數的熊貓數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM