Я бы хотел иметь возможность иметь два индекса столбцов для одной оси одновременно для пандой DataFrame. Объекты в индексах могут быть разных типов, одного перечисления и одной строки, так что оба типа могут использоваться для индексации без двусмысленности. По-другому это будет похоже на MultiIndex без иерархии. Цель состоит в том, чтобы у каждого столбца было имя и тип индексируемого столбца.
Я хочу иметь возможность выполнять обе следующие операции с индексами в одном и том же кадре данных:
df['NAME']
df[MyType.FirstName] # MyType is an Enum
Я не нашел очевидных способов сделать это. Одним из способов может быть использование одного индекса, который использует объекты «комбинированного» класса, который по-разному переопределяет операторы сравнения в зависимости от заданных типов. Это путь или есть лучший путь?
class Combination:
def __init__(self, value1, value2):
self.value1 = value1
self.value2 = value2
def __eq__(self, other):
if isinstance(other, str):
return self.value1 == other
else:
return self.value2 == other
# etc if other operators are needed