Python Pandas如何创建非0、1的虚拟变量?
我在pandas中使用get_dummies()函数创建了虚拟变量。现在我想修改结果,使用另一种指标,而不仅仅是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可能是一个选项,这样数据框的大小就一致了。不过我不确定这是否是最好的方法。任何帮助都很感激。
1 个回答
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]