我希望能够为pandas DataFrame同时具有同一轴的两个列索引。索引中的对象将具有不同的类型,即一个枚举和一个字符串,因此这两种类型都可以毫无歧义地用于索引。用不同的措词,它就像没有层次结构的MultiIndex。目的是使每个列都具有名称和可索引的列类型。
我希望能够在同一DataFrame上执行以下两个索引操作:
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
答案 0 :(得分:0)
AFAIK pandas对此没有任何规定。一种简单的方法是使用翻译词典:
trans = {MyType.FirstName: 'NAME', ...}
df[trans[MyType.FirstName]] # same as df['NAME']