首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据来自另一个dataframe的条件数学向dataframe添加新列?

如何根据来自另一个dataframe的条件数学向dataframe添加新列?
EN

Stack Overflow用户
提问于 2022-02-14 22:08:05
回答 3查看 59关注 0票数 0

让我简化一下。

我有货币会话键DataFrame,它有2列。以美元为单位的货币和即期汇率。

代码语言:javascript
复制
currency    fx_rate
INR         0.013223
JPY         0.008653
MYR         0.239000
CNY         0.157300
HKD         0.128160

我的第二个DataFrame是

代码语言:javascript
复制
currency ID   amount outstanding
    INR 78waf 1000000000
    JPY 48waf 100000000000
    MYR 38waf 10000000
    CNY 28waf 1000000000
    HKD 18waf 10000000

如何根据货币键DataFrame在我的第二个DF (“转换金额”)中创建第四列?转换需要多次( INR: 0.013223 * 1000000000 = 13223000)

最终目标:

代码语言:javascript
复制
currency ID   amount outstanding CONVERTED AMOUNT
    INR 78waf 1000000000         13223000
    JPY 48waf 100000000000       etc..
    MYR 38waf 10000000           ...
    CNY 28waf 1000000000         ...
    HKD 18waf 10000000           ...
EN

回答 3

Stack Overflow用户

发布于 2022-02-14 22:16:42

您的最后两个数据文件的列似乎比它们应该的多。

不管怎么说,如果我正确理解了你的问题,我可能会这样做:

代码语言:javascript
复制
df["CONVERTED AMOUNT"] = df["amount"] * 0.013223
票数 1
EN

Stack Overflow用户

发布于 2022-02-14 22:18:38

您可以将"fx_rate“映射到df2中的”货币“列,并将其与”amount_outstanding“相乘:

代码语言:javascript
复制
df2['converted_amount'] = df2['currency'].map(df1.set_index('currency')['fx_rate']) * df2['amount_outstanding']

您还可以使用“货币”进行set_index,并将匹配货币和reset_index上的金额乘以。

代码语言:javascript
复制
df2 = df2.set_index('currency')
df2['converted_amount'] = df2['amount_outstanding'].mul(df1.set_index('currency')['fx_rate'])
df2 = df2.reset_index()

另一个选项是在“货币”上merge DataFrames并乘以相关列:

代码语言:javascript
复制
merged = df2.merge(df1, on='currency')
merged['converted_amount'] = merged['amount_outstanding'] * merged['fx_rate']
out = merged.drop(columns=['fx_rate'])

输出:

代码语言:javascript
复制
  currency     ID  amount_outstanding  converted_amount
0      INR  78waf          1000000000        13223000.0
1      JPY  48waf        100000000000       865300000.0
2      MYR  38waf            10000000         2390000.0
3      CNY  28waf          1000000000       157300000.0
4      HKD  18waf            10000000         1281600.0
票数 1
EN

Stack Overflow用户

发布于 2022-02-15 00:55:37

代码语言:javascript
复制
df = pd.merge(df2, df1, how = 'left', on = 'currency')
df['converted_amount'] = df['amount_outstanding'] * df['fx_rate']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71118853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档