Панды get_level_values ​​ведет себя неожиданно - PullRequest
0 голосов
/ 25 августа 2018

У меня есть мультииндекс в моем фрейме данных, как это:

x = pd.MultiIndex(levels=[['a', 'b', 'c'], ['2014.12.31', 'd', 'e', '2015.12.31']],
labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]],
names=['proj', 0])
x.get_level_values(0)
x.get_level_values(1)

Я ожидаю, что get_level_values(0) и get_level_values(1) дадут мне разные результаты.Но они этого не делают.Это ошибка?

Однако, x.get_level_values('proj') и x.get_level_values(0) дают ожидаемые результаты.Зачем?Может кто-нибудь объяснить это?Благодаря.

1 Ответ

0 голосов
/ 25 августа 2018

У вас есть два уровня индекса, и вы можете получить их либо по имени, либо по целому индексу. Уровень индекса при целочисленном индексе 0 имеет имя proj, строку. Уровень индекса при целочисленном индексе 1 имеет имя 0, целое число.

Когда вы звоните get_level_values(level), pandas сначала ищет уровень индекса по имени. Таким образом, в вашей ситуации вызов get_level_values(0) разрешается до второго уровня с именем 0, а get_level_values(1) разрешается до того же уровня, но в этом случае по целому индексу 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...