我有一个这样的数据框:
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将丢弃未使用的列。
干杯!
答案 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