如何在熊猫DataFrame中使用两种不同的方式索引同一轴

时间:2019-05-22 11:04:55

标签: python pandas indexing

我希望能够为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

1 个答案:

答案 0 :(得分:0)

AFAIK pandas对此没有任何规定。一种简单的方法是使用翻译词典:

trans = {MyType.FirstName: 'NAME', ...}

df[trans[MyType.FirstName]]   # same as df['NAME']