Почему доступ к MultiIndexed DataFrame не завершается с ошибкой, если задан слишком длинный массив для метода loc? - PullRequest
3 голосов
/ 05 ноября 2019

Я решил начать работу с пандами, так что теперь я имею дело с мультииндексированными фреймами данных. Работая с индексированием и нарезкой, я заметил следующее, что не могу объяснить:

import pandas as pd
import numpy as np

# generate a MultiIndexed DataFrame with more or less random data
index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],
names=['year', 'visit'])
columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']],
names=['subject', 'type'])

data = np.round(np.random.randn(4, 6), 1)
data[:, ::2] *= 10
data += 37

health_data = pd.DataFrame(data, index=index, columns=columns)
health_data
>>> 
    subject     Bob     Guido   Sue
    type    HR  Temp    HR  Temp    HR  Temp
year    visit                       
2013    1   42.0    37.4    34.0    37.2    41.0    36.2
        2   51.0    36.5    34.0    35.7    38.0    37.2
2014    1   52.0    37.2    32.0    37.9    28.0    39.3
        2   40.0    36.3    68.0    36.3    55.0    38.3

# Now why is this even working?
>>> health_data.loc[[2014, 0, 0, 100]]
    subject     Bob     Guido   Sue
    type    HR  Temp    HR  Temp    HR  Temp
year    visit                       
2014    1   52.0    37.2    32.0    37.9    28.0    39.3
        2   40.0    36.3    68.0    36.3    55.0    38.3

Я начал с health_data.loc[[2014]], который дает тот же результат, а игра вокруг дает этот странный результат. Что это за линия и почему она работает?

...