熊猫数据框,使用字典乘以列值

时间:2021-04-26 08:17:21

标签: python pandas

我有一个这样的数据框:

[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' 货币行按 dict 中相应的 'EUR' 汇率,对于出现在数据框中的所有货币都是相同的。

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

3 个答案:

答案 0 :(得分: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 列。

答案 1 :(得分:2)

data['rate'] = data['currency'].map(conversions) 
data['value'] = data['rate'] * data['value']

答案 2 :(得分:2)

您可以使用:

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