【问题标题】:how to multiply multiple columns by a column in Pandas如何将多列乘以熊猫中的一列
【发布时间】:2014-03-28 01:56:23
【问题描述】:

我想要:

df[['income_1', 'income_2']] * df['mtaz_proportion']

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

这样我就可以设置了

df[['mtaz_income_1', 'mtaz_income_2']] = 
df[['income_1', 'income_2']] * df['mtaz_proportion']

但我得到:

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 ...

等等……

我缺少什么简单的东西?

谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

    df[["A", "B"]].multiply(df["C"], axis="index")
    

    【讨论】:

    • 只是一个警告:df["C"] 如果作为像 df[["C"]] 这样的 DataFrame 传递,则可能不会像预期的那样运行
    • 代码有效,但 df 不支持它。 (-> print(df) 之后只给出原始 df)而是这样做: df[["A", "B"]] = df[["A", "B"]].multiply(df["C" ], axis="index") 然后 df 中的 A 和 B 列保存更改
    【解决方案2】:

    HYRY答案的另一种写法:

    df.loc[:,['A', 'B']] = df.loc[:,['A', 'B']].multiply(df.loc[:, 'C'], axis="index")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-22
      • 2020-02-04
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      相关资源
      最近更新 更多