代码之家  ›  专栏  ›  技术社区  ›  Don Giulio

在数据帧中,使用dict将列值相乘

  •  1
  • Don Giulio  · 技术社区  · 4 年前

    我有这样一个数据帧:

    [in]: data[['currency','value']].sample(10).to_clipboard
    
    [out]
    index   currency         value
    PIRC.MI      EUR  4.944000e+09
    DHIL         USD  5.088264e+08
    BBZA.DE      EUR  3.969099e+09
    MUR          USD  2.572464e+09
    CTEC         USD           NaN
    VEA          USD           NaN
    KIE          USD           NaN
    GLO          USD  4.115056e+08
    ET           USD  2.145219e+10
    FTV          USD  2.445958e+10
    

    conversions= {'HKD': 0.13, 
                 'EUR': 1.21,
                 'GBP': 1.39,
                  'USD': 1.0
                 }
    

    我需要将所有货币行的值乘以dict中相应的汇率。

    例如:所有的“EUR”货币行按dict中相应的“EUR”汇率,数据框中出现的所有货币都是相同的。

    我想用一个for遍历dict中的所有项目,但我相信pandas支持一种更好更简单的方法。

    3 回复  |  直到 4 年前
        1
  •  2
  •   azal    4 年前

    您可以使用:

    data['currency'].map(conversions).mul(data['value'])
    
        2
  •  2
  •   Mustafa Aydın    4 年前
    df["result"] = df.currency.map(conversions) * df.value
    

    如果你看 df.currency.map(conversions) 是的

    0    1.21
    1    1.00
    2    1.21
    3    1.00
    4    1.00
    5    1.00
    6    1.00
    7    1.00
    8    1.00
    9    1.00
    

    i、 它有乘数。然后我们把它乘以 df.value 列。

        3
  •  2
  •   imdevskp    4 年前
    data['rate'] = data['currency'].map(conversions) 
    data['value'] = data['rate'] * data['value']