有条件地将多列乘以一列(在Excel中很容易)

时间:2018-10-26 12:12:45

标签: python pandas dataframe

我有一个这样的数据框:

a   b   c   d   m1   m2 
3   2   2   2   5    4 
1   4   1   1   5    4   
3   2   2   3   5    4

我想将a和b乘以m1,将c和d乘以m2:

a   b   c   d   m1   m2 
15  10  8   8   5    4 
5   20  4   4   5    4   
15  10  8   12  5    4

还保留了原始的数据帧结构,这在Excel中相当简单,但是事实证明Pandas很复杂,因为如果我尝试第一个乘法(m1),那么DF将丢弃未使用的列。

干杯!

2 个答案:

答案 0 :(得分:1)

mul与由列名称列表定义的列子集一起使用:

df[['a', 'b']] = df[['a', 'b']].mul(df['m1'], axis=0)
df[['c', 'd']] = df[['c', 'd']].mul(df['m2'], axis=0)

print (df)
    a   b  c   d  m1  m2
0  15  10  8   8   5   4
1   5  20  4   4   5   4
2  15  10  8  12   5   4

答案 1 :(得分:1)

这是使用np.repeat:

的一种方法
df.iloc[:, :4] *= np.repeat(df.iloc[:, 4:].values, 2, axis=1)

print(df)

    a   b  c   d  m1  m2
0  15  10  8   8   5   4
1   5  20  4   4   5   4
2  15  10  8  12   5   4