首页 > 解决方案 > 多列预测变量的交互作用

问题描述

我有两个预测变量“Sex”和“Class”,它们被转换为二进制虚拟变量,例如:

    female  male
 0    0      1
 1    1      0
 2    1      0
 3    1      0
...  ...    ...

    class1  class2  class3
 0     0       0       1
 1     1       0       0
 2     0       1       0
 3     0       0       1
...   ...     ...     ...

我想得到他们的互动,如下所述(列的顺序并不重要):

     female1  male1  female2  male2  female3  male3
 0     0       0       0        0       0       1
 1     1       0       0        0       0       0
 2     0       0       1        0       0       0
 3     0       0       0        0       0       1
...   ...     ...     ...      ...     ...     ...

有没有任何有效的方法(或方法)来做到这一点,而不是为每一列循环?

标签: pythonpandasnumpyscikit-learn

解决方案


你可以使用DataFrame.mul+ pd.concat

new_df = pd.concat([df_sex.mul(col,axis='rows').add_suffix(name[-1]) 
                    for name,col in df_class.items()],axis=1)
print(new_df)
   female1  male1  female2  male2  female3  male3
0        0      0        0      0        0      1
1        1      0        0      0        0      0
2        0      0        1      0        0      0
3        0      0        0      0        1      0   

推荐阅读