У меня проблема, и это просто не имеет смысла. У меня есть большой pd.DataFrame
, что я уменьшил в размерах, так что я мог бы легко показать на примере (так называемый test1
):Нарезка MultiIndex не работает должным образом (ошибка с использованием lexsorted кортежей)
>>> print(test1)
value TIME \
star 0 1 2 3 4
0 1952.205873 1952.205873 1952.205873 1952.205873 1952.205873
1 1952.226307 1952.226307 1952.226307 1952.226307 1952.226307
2 1952.246740 1952.246740 1952.246740 1952.246740 1952.246740
3 1952.267174 1952.267174 1952.267174 1952.267174 1952.267174
value CNTS \
star 5 0 1 2
0 1952.205873 575311.432228 534103.079080 179471.239561
1 1952.226307 571480.854183 533138.021051 187456.451900
2 1952.246740 555631.798095 530263.846685 203247.734806
3 1952.267174 553639.056784 527058.335157 210088.229427
value
star 3 4 5
0 121884.201457 39003.397835 2089.321993
1 122796.312201 39552.401359 2810.010142
2 123500.068304 39158.050385 2652.409086
3 124357.387418 38881.565235 2721.908129
и я хочу, чтобы выполнить срез индексации на нем. Однако он просто не работает. Вот что я пытаюсь:
test.loc[:,(slice(None),0)]
и я получаю эту ошибку:
*** KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'
Это не первый раз, когда я имел эту ошибку или задал вопрос, но я до сих пор не понять, как это исправить, и что не так.
Еще более запутанным является то, что следующий код, кажется, работает без сучка и задоринки:
import pandas as pd
import numpy as np
column_values = ['TIME', 'XPOS']
target = range(0,2)
mindex = pd.MultiIndex.from_product([column_values, target], names=['value', 'target'])
df = pd.DataFrame(columns=mindex, index=range(10), dtype=float)
print(df.loc[:,(slice(None),0)])
Я просто не понимаю, что происходит, и что здесь не так.