为了账号安全,请及时绑定邮箱和手机立即绑定

需要帮助创建一个伪虚拟变量,而不是 '1' 使用来自另一列的值

需要帮助创建一个伪虚拟变量,而不是 '1' 使用来自另一列的值

蛊毒传说 2021-12-17 14:56:24
我有一个看起来像这样的数据框:A     B    C34    x    a3     y    b23    y    a40    x    b本质上,cols B 和 C 需要成为虚拟变量,带有标题 B_x、B_y、C_a、C_b。该函数几乎与 get_dummies() 在 Pandas 中的工作原理完全相同,但有一个主要区别:对于在值为 1 的情况下创建的所有虚拟变量,我需要将值设为 A 列中的值。A     B_x   B_y  C_a C_b34    34    0    34  03     0     3    0   323    0     23   23  040    40    0    0   40我正在处理具有大量类别的相当大的数据。我试过在数据集上使用 get_dummies(),然后使用 df.mask 将所有 1 更改为 df.A,但是这非常慢(大约 10 分钟)。
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

使用pd.get_dummies和广播栏目A


df2 = pd.get_dummies(df[['B', 'C']]) * df.A.values.reshape([-1,1])


    B_x B_y C_a C_b

0   34  0   34  0

1   0   3   0   3

2   0   23  23  0

3   40  0   0   40

要分配 back A,有很多选择。可以做df2['A'] = df['A']或使用pd.concat


pd.concat([df.A, df2], axis=1)


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信