Я тестирую более близко, подражая тому, что установило в системе формул R.Ниже приведено более простое представление принятого ответа.Python по своему дизайну обеспечивает такую гибкость.R, конечно, может делать то же самое (пользовательская функция), но ее легче игнорировать.
import pandas as pd
from patsy import dmatrices, dmatrix, demo_data
dt=pd.DataFrame({'F1':['a','b','c','d','e','a'],'F2':['X','X','Y','Y','Z','Z']})
def xx(x,y):return(np.isin(x,list(y))*1)
dmatrix("1+xx(F1,['a','b'])",dt)
DesignMatrix with shape (6, 2)
Intercept xx(F1, ['a', 'b'])
1 1
1 1
1 0
1 0
1 0
1 1
Terms:
'Intercept' (column 0)
"xx(F1, ['a', 'b'])" (column 1)