Python patsy中未修改的列名索引

Python patsy中未修改的列名索引,python,machine-learning,patsy,Python,Machine Learning,Patsy,我正在使用patsy为回归准备分类数据,并希望在DesignMatrix中从列名映射到其索引。我尝试过使用对象的column\u name\u index属性,但列名已被修改以反映编码 使用来自的数据的示例: 我希望能够通过调用以下命令访问列索引,例如“a2”: x.design_info.column_name_indexes['a2'] 当然,这会返回KeyError:“a2”。因此,我必须自己构造修改过的键,以获得所需的列索引1: 是否有一种方法可以通过引用未修改的功能/列名(即“a2”

我正在使用patsy为回归准备分类数据,并希望在DesignMatrix中从列名映射到其索引。我尝试过使用对象的column\u name\u index属性,但列名已被修改以反映编码

使用来自的数据的示例:

我希望能够通过调用以下命令访问列索引,例如“a2”:

x.design_info.column_name_indexes['a2']
当然,这会返回KeyError:“a2”。因此,我必须自己构造修改过的键,以获得所需的列索引1:


是否有一种方法可以通过引用未修改的功能/列名(即“a2”)来访问列索引,而不必构造修改的键(即“a[T.a2]”?

通常,a2等分类值与设计矩阵列之间没有一对一的映射。你所说的专栏已经比这更复杂了——这是A2和A1值之间的一种处理对比,而且事情可以任意复杂得多,例如,考虑赫尔默特或多项式编码。 如果您知道要查找与变量a的a2相关的治疗对比度,则可以使用

def column_for_treatment(design_info, factor, value):
    column_name = "{}[T.{}]".format(factor, value)
    return design_info.column_name_indexes[colum_name]

column_for_treatment(x.design_info, "a", "a2")
这看起来有点傻,但它应该会起作用,考虑到上面提到的一般问题,我不确定什么会更好

x.design_info.column_name_indexes['a[T.a2]']
def column_for_treatment(design_info, factor, value):
    column_name = "{}[T.{}]".format(factor, value)
    return design_info.column_name_indexes[colum_name]

column_for_treatment(x.design_info, "a", "a2")