계층 적 색인과 함께 데이터를 사용하면 쉽게 값의 범위를 선택할 수 있습니까? xs
및 .loc
을 포함하여 내가 본 모든 방법은 단일 값으로 제한되는 것처럼 보입니다. Benefits of panda's multiindex?을 참조하십시오. 이 예제 데이터를 사용하여,다중 색인 (중복 값 포함)에서 선택
from pandas import *
from numpy import *
import itertools as it
M = 100 # Number of rows to generate
# Create some test data with multiindex
df = DataFrame(randn(M, 10))
df.index = [randint(4, size=M), randint(8, size=M)]
df.index.rename(['a', 'b'])
나는 첫 번째 인덱스는 하나 또는 두 개의이고 두 번째 인덱스가 3 또는 4 내가 함께 .loc
을 사용하고 왔어요 가장 가까운 곳 모두를 선택할 수 있도록하고 싶습니다 튜플
# Now extract a subset
part = df.loc[[(1, 3), (1,4), (2,3), (2,4)]]
그러나 이것은 몇 가지 이상한 행동을 제공 목록,
# The old indices are still shown for some reason
print(part.index.levels)
# Good indexing
print("correct:\n", part.loc[(1, 1)])
# No keyerror, although the key wasn't included
print("wrong:\n", part.loc[[(0, 3)]])
# Indexing of first index, and then a column, very odd
print("odd:\n", part.loc[(1, 9)])
# But there is an error accessing the original this way
print("Expected error:\n", df.loc[(1, 9)])
출력 :
In [436]: [[0, 1, 2, 3], [0, 1, 2, 3, 4, 5, 6, 7]]
correct:
0 1 2 3 4 5 6 \
1 3 -0.183667 0.578867 -0.944514 0.026295 0.778354 0.603845 0.636486
3 -0.337596 0.018084 -0.654721 -1.121475 -0.561706 0.695095 -0.512936
3 -0.670779 -0.425093 1.262278 -1.806815 0.855900 -0.230683 -0.225658
3 -0.274808 -0.529901 1.265333 0.559646 -1.418687 0.492577 0.141648
7 8 9
1 3 1.109179 -1.569236 -0.617408
3 -0.659310 1.249105 0.032657
3 0.315601 1.100192 -0.389736
3 -0.267462 -0.025189 0.069047
odd:
3 -0.617408
3 0.032657
3 -0.389736
3 0.069047
4 0.217577
4 -0.232357
Name: 9, dtype: float64
wrong:
0 1 2 3 4 5 6 7 8 9
0 3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
(truncated)
계층 적 인덱스의 여러 부분에 액세스하는 튜플 목록보다 나은 방법이 있습니까? 그렇지 않은 경우 튜플을 사용하여 인덱싱 한 후 결과를 정리하여 NaN 대신 현명한 오류가 표시되도록 정리하는 방법이 있습니까?
의 예와이 작품이 질문에 주어진 것 어떻게? – user2699
'df.loc [IndexSlice [[0, 1], [3, 4]] : :]'작동해야하지만, 오류 'KeyError :'가 발생합니다. MultiIndex Slicing은 인덱스가 완전히 lexsorted tuple len이어야합니다 (2), lexsort 깊이 (0) ''. – user2699