Jak odpytywać wartości kolumn indeksu MultiIndex w pandach

Przykład kodu:

In [171]: A = np.array([1.1, 1.1, 3.3, 3.3, 5.5, 6.6])

In [172]: B = np.array([111, 222, 222, 333, 333, 777])

In [173]: C = randint(10, 99, 6)

In [174]: df = pd.DataFrame(zip(A, B, C), columns=['A', 'B', 'C'])

In [175]: df.set_index(['A', 'B'], inplace=True)

In [176]: df
Out[176]: 
          C
A   B      
1.1 111  20
    222  31
3.3 222  24
    333  65
5.5 333  22
6.6 777  74 

Teraz chcę pobrać wartości A:
Q1: w zakresie [3,3, 6,6] - oczekiwana wartość zwracana: [3,3, 5,5, 6,6] lub [3,3, 3,3, 5,5, 6,6] w przypadku ostatnim włącznie i [3.3, 5.5] lub [3.3, 3.3, 5.5], jeśli nie.
Q2: w zakresie [2.0, 4.0] - oczekiwana wartość powrotu: [3.3] lub [3.3, 3.3]

Tak samo dla każdego innegoMultiIndex wymiar, na przykład wartości B:
Q3: w zakresie [111, 500] z powtórzeniami, jako liczba wierszy danych w zakresie - oczekiwana wartość zwrotu: [111, 222, 222, 333, 333]

Bardziej formalny:

Załóżmy, że T jest tabelą z kolumnami A, B i C. Tabela zawieran wydziwianie. Komórki tabeli są liczbami, na przykład A podwójne, B i C liczby całkowite. StwórzmyRamka danych tabeli T, nazwijmy to DF. Ustawmy indeksy A i B DF (bez powielania, tj. Bez oddzielnych kolumn A i B jako indeksów i oddzielnych jako dane), tj. A i B w tym przypadkuMultiIndex.

Pytania:

Jak napisać zapytanie w indeksie, na przykład, aby zapytać o indeks A (lub B), powiedzmy w przedziale etykiet [120.0, 540.0]? Istnieją etykiety 120.0 i 540.0. Muszę wyjaśnić, że interesuje mnie tylko lista indeksów jako odpowiedź na zapytanie!Jak to samo, ale w przypadku etykiet 120.0 i 540.0 nie istnieją, ale są etykiety o wartości niższej niż 120, wyższej niż 120 i mniejszej niż 540 lub wyższej niż 540?W przypadku odpowiedzi dla Q1 i Q2 były unikalne wartości indeksu, teraz takie same, ale z powtórzeniami, jako liczba wierszy danych w zakresie indeksu.

Znam odpowiedzi na powyższe pytania w przypadku kolumn, które nie są indeksami, ale w przypadku indeksów, po długich badaniach w sieci i eksperymentach z funkcjonalnościąpandy, Nie udało mi się. Jedyną metodą (bez dodatkowego programowania) widzę teraz jest posiadanie duplikatu A i B jako kolumn danych oprócz indeksu.

questionAnswers(3)

yourAnswerToTheQuestion