【问题标题】:pandas dataframe, multiply column values using a dict熊猫数据框,使用字典乘以列值
【发布时间】:2021-04-26 16:22:10
【问题描述】:

我有一个这样的数据框:

[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
             }

我需要将所有货币行的值乘以字典中对应的汇率。

例如:字典中对应的“EUR”汇率的所有“EUR”货币行,对于出现在数据框中的所有货币都相同。

我虽然用 for 遍历 dict 中的所有项目,但我确信 pandas 支持一种更好、更简单的方法。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用:

    data['currency'].map(conversions).mul(data['value'])
    

    【讨论】:

      【解决方案2】:
      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
      

      即它有乘数。然后我们将它乘以df.value 列。

      【讨论】:

        【解决方案3】:
        data['rate'] = data['currency'].map(conversions) 
        data['value'] = data['rate'] * data['value']
        

        【讨论】:

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