我使用get_dummies()函数在pandas中创建了虚拟变量。我想修改结果以使用另一个指标,而不仅仅是get_dummies创建的二进制是/否。
虚拟变量数据框现在如何显示:
VALUE DUMMY 1 DUMMY 2 DUMMY 3
10.00 0 0 1
30.00 0 1 0
50.00 0 0 0
15.00 1 0 0
30.00 0 0 0
我想要实现的目标:
VALUE DUMMY 1 DUMMY 2 DUMMY 3
10.00 0 0 10
30.00 0 30 0
50.00 0 0 0
15.00 15 0 0
30.00 0 0 0
我想到这样做的方式是:
np.where(df.COLUMN ==1, df.REPLACEMENT_VALUE, 0)
但是这仅适用于一列。如果我尝试:
np.where(df[:,1:5] ==1, df.REPLACEMENT_VALUE, 0)
它不起作用,因为系列的框架形状不一致。复制系列REPLACEMENT_VALUE可能是一个选项,因此帧大小相同。我不确定这是不是最好的方法。任何帮助表示赞赏。
答案 0 :(得分:6)
您可以使用mul
方法:
In [75]: df
Out[75]:
VALUE DUMMY 1 DUMMY 2 DUMMY 3
0 10 0 0 1
1 30 0 1 0
2 50 0 0 0
3 15 1 0 0
4 30 0 0 0
[5 rows x 4 columns]
In [76]: df.loc[:, 'DUMMY 1':'DUMMY 3'].mul(df['VALUE'], axis=0)
Out[76]:
DUMMY 1 DUMMY 2 DUMMY 3
0 0 0 10
1 0 30 0
2 0 0 0
3 15 0 0
4 0 0 0
[5 rows x 3 columns]