有一个名为patsy的新模块可以解决此问题。下面链接的快速入门通过几行代码完全解决了上述问题。
http://patsy.readthedocs.org/en/latest/overview.html
http://patsy.readthedocs.org/en/latest/quickstart.html
这是一个示例用法:
import pandasimport patsydataframe = pandas.io.parsers.read_csv("salary2.txt") #salary2.txt is a re-formatted data set from the textbook#Introductory Econometrics: A Modern Approach#by Jeffrey Wooldridgey,X = patsy.dmatrices("sl ~ 1+sx+rk+yr+dg+yd",dataframe)#X.design_info provides the meta data behind the X columnsprint X.design_info产生:
> DesignInfo(['Intercept',> 'sx[T.male]',> 'rk[T.associate]',> 'rk[T.full]',> 'dg[T.masters]',> 'yr',> 'yd'],> term_slices=OrderedDict([(Term([]), slice(0, 1, None)), (Term([evalFactor('sx')]), slice(1, 2, None)),> (Term([evalFactor('rk')]), slice(2, 4, None)),> (Term([evalFactor('dg')]), slice(4, 5, None)),> (Term([evalFactor('yr')]), slice(5, 6, None)),> (Term([evalFactor('yd')]), slice(6, 7, None))]),> builder=<patsy.build.DesignMatrixBuilder at 0x10f169510>)


