Python Pandas使用1或0以外的值创建虚拟变量?

时间:2014-03-14 18:43:49

标签: python numpy pandas dataframe

我使用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可能是一个选项,因此帧大小相同。我不确定这是不是最好的方法。任何帮助表示赞赏。

1 个答案:

答案 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]