Pandas dataframe с иерархическим индексом различной глубины - PullRequest
0 голосов
/ 15 ноября 2018

Pandas имеет приятный и многофункциональный механизм для фреймов данных с иерархическими индексами: https://pandas.pydata.org/pandas-docs/stable/advanced.html,, но он в основном предназначен для случая, когда глубина иерархии постоянна. Есть ли стандартный, возможно, менее функциональный способ иметь фрейм данных с иерархическим индексом с различной глубиной?

Мне на самом деле не нужны функции частичного индексирования, группировки и стекирования / распаковки MultiIndex, фрейм данных, в котором столбцы индексируются необработанными кортежами, подойдет моим потребностям.

Я бы хотел сделать что-то вроде следующего:

import pandas as pd
df = pd.DataFrame({
    ("a",):   [1],
    ("b",):   [2],
    ("x", 1): [3],
    ("x", 2): [4]
})

Тем не менее, по умолчанию MultiIndex для панд немного перегружен для моих целей в этой ситуации. Например, это делает «истинный» индекс первого столбца равным ("a", nan). Затем df[("a",)] возвращает все столбцы, индекс которых начинается с ("a",), включая, например, столбец типа ("a", 1), если он присутствует.

Один из вариантов - сделать что-то вроде

import pandas as pd
df = pd.DataFrame({
    "a":      [1],
    "b":      [2],
    ("x", 1): [3],
    ("x", 2): [4]
})

, который создает фрейм данных, проиндексированный сочетанием строк и кортежей, но это, похоже, не поддерживается.

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