Фильтровать по уровню индекса или столбцу, если я не знаю, является ли мое поле уровнем индекса или столбцом - PullRequest
0 голосов
/ 25 января 2019

У меня есть DataFrame с количеством уровней индекса и количеством столбцов. У меня есть поле, которое я знаю, это либо имя уровня индекса, либо имя столбца, но я не знаю, какой именно. Я хочу отфильтровать мой DataFrame в этом поле. Если бы поле было уровнем индекса, я бы сделал df[df.index.get_level_values(field) == 0], а если бы это был столбец, я бы сделал df[df[field] == 0], но так как я не знаю, что это, я застрял. Есть ли способ, позволяющий пандам выяснить, есть ли имя поля в индексе или столбцах, и захватить индекс / серию соответствующим образом?

Я знаю, что могу сбросить индекс и затем вернуть его обратно, но это кажется глупым и потенциально проблематичным, если не все уровни индекса названы.

1 Ответ

0 голосов
/ 26 января 2019

Поскольку вы упомянули, что это либо метка столбца, либо индекса, попробуйте:

if field in list(df.columns):
   #do df[df[field] == 0]
else:
   #do df[df.index.get_level_values(field) == 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...