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

我有一个看起来像这样的数据框:


A     B    C


34    x    a

3     y    b

23    y    a

40    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_b


34    34    0    34  0

3     0     3    0   3

23    0     23   23  0

40    40    0    0   40

我正在处理具有大量类别的相当大的数据。


我试过在数据集上使用 get_dummies(),然后使用 df.mask 将所有 1 更改为 df.A,但是这非常慢(大约 10 分钟)。


蛊毒传说
浏览 110回答 1
1回答

慕妹3242003

使用pd.get_dummies和广播栏目Adf2 = pd.get_dummies(df[['B', 'C']]) * df.A.values.reshape([-1,1])    B_x B_y C_a C_b0   34  0   34  01   0   3   0   32   0   23  23  03   40  0   0   40要分配 back A,有很多选择。可以做df2['A'] = df['A']或使用pd.concatpd.concat([df.A, df2], axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python