You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在国家与日期匹配时,用金额除以对应汇率计算EUR_amount

解决方案

你可以通过pandas透视表功能快速实现计算,逻辑直观适合新手,完整可运行代码如下:

import pandas as pd

# 示例输入数据
df = pd.DataFrame({
    'country_code':['EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US'],
    'date':['2019-03','2019-03','2019-03','2019-04','2019-04','2019-04','2019-05','2019-05','2019-05','2019-03','2019-03','2019-03','2019-04','2019-04','2019-04','2019-05','2019-05','2019-05'],
    'item':['exposure','exposure','exposure','exposure','exposure','exposure','exposure','exposure','exposure','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate'],
    'value':[15000,9000,13000,16500,8750,17000,17000,7999,25000,1.00,1.25,0.90,1,1.23,0.93,1.00,1.24,0.95]
})

# 1. 长表转宽表,将同一国家、同一日期的金额、汇率放在同一行
df_wide = df.pivot(
    index=['country_code', 'date'], # 匹配维度:国家+日期
    columns='item', # 要拆分的指标列
    values='value' # 指标对应的数值
).reset_index()

# 2. 直接计算欧元计价金额
df_wide['EUR_amount'] = df_wide['exposure'] / df_wide['FX-rate']

# 输出结果
print(df_wide)

运行后输出的宽表结构如下,每行对应唯一的国家+日期组合,自带计算好的欧元金额:

country_codedateFX-rateexposureEUR_amount
EU2019-031.001500015000.000000
EU2019-041.001650016500.000000
EU2019-051.001700017000.000000
UK2019-031.2590007200.000000
UK2019-041.2387507113.821138
UK2019-051.2479996450.806452
US2019-030.901300014444.444444
US2019-040.931700018279.569892
US2019-050.952500026315.789474

如果你需要保留原始的长表结构,只给金额行添加计算结果,可以用下面的方法:

# 构造国家+日期对应汇率的映射表
rate_dict = df[df['item'] == 'FX-rate'].set_index(['country_code', 'date'])['value'].to_dict()

# 匹配汇率计算欧元金额,仅填充到金额行
df.loc[df['item'] == 'exposure', 'EUR_amount'] = df.loc[df['item'] == 'exposure'].apply(
    lambda row: row['value'] / rate_dict[(row['country_code'], row['date'])],
    axis=1
)

print(df)

内容的提问来源于stack exchange,提问作者Mathias Nuding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:06:04