如何在Pandas中将列乘以多列

tap*_*zx2 40 python pandas

我想拥有:

df[['income_1', 'income_2']] * df['mtaz_proportion']
Run Code Online (Sandbox Code Playgroud)

返回那些列乘以 df['mtaz_proportion']

所以我可以设置

df[['mtaz_income_1', 'mtaz_income_2']] = 
df[['income_1', 'income_2']] * df['mtaz_proportion']
Run Code Online (Sandbox Code Playgroud)

但相反,我得到:

income_1    income_2    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  
0   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
1   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
Run Code Online (Sandbox Code Playgroud)

等...

我错过了什么简单的事情?

谢谢!

HYR*_*YRY 63

使用multiply方法和设置axis="index":

df[["A", "B"]].multiply(df["C"], axis="index")
Run Code Online (Sandbox Code Playgroud)

  • 该代码有效,但 df 不保存它。(-> print(df) 只是随后给出原始 df )改为: df[["A", "B"]] = df[["A", "B"]].multiply(df["C" ], axis="index") 然后 df 中的 A 列和 B 列保存更改 (3认同)
  • 只是一个警告:如果作为像 df[["C"]] 这样的 DataFrame 传递,`df["C"]` 可能不会按预期运行 (2认同)