Python Pandas如何创建非0、1的虚拟变量?

2 投票
1 回答
2991 浏览
提问于 2025-04-17 22:21

我在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]

撰写回答