python - 多列预测变量的交互作用
问题描述
我有两个预测变量“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
... ... ... ... ... ... ...
有没有任何有效的方法(或方法)来做到这一点,而不是为每一列循环?
解决方案
你可以使用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
推荐阅读
- c - 在子程序中使用/不使用 return 有什么区别?
- r - 在 dplyr mutate 中取领先和滞后日期的平均值
- sql - 在 Join (SQL) 中使用替换函数
- sql-server - 防止按 NULL 值对行进行分组
- typescript - 开玩笑 - spyOn 没有代码覆盖实际实现
- python - Keras 错误:图形无法按拓扑顺序排序
- javascript - Hybris 1811 SmartEdit Loader 一直在加载
- java - 嵌套异常是 java.lang.IllegalArgumentException:参数值 [2020-04-20] 与预期类型不匹配 [java.util.Date (n/a)]]
- eclipse - eclipse中的Scala安装
- r - 在 R 的 geom_line 中添加标签