如何用pandas将DataFrame内多币种价格统一转换为USD
实现步骤及代码
你的price列是「货币类型+金额」的字符串格式,我们可以通过拆分列+汇率映射的方式完成转换,完整代码如下:
import pandas as pd # 构造示例数据,你可以替换为自己读取的实际数据 df = pd.DataFrame({ "id": [1, 2, 3, 4], "price": ["USD 4", "EUR 7", "GBP 9", "Yen 4"], "product": ["shirt", "pant", "soxs", "hat"] }) # 1. 定义汇率映射规则 exchange_rate = { "USD": 1, "EUR": 1.22, "GBP": 1.42, "Yen": 0.01 } # 2. 拆分price列获取货币类型和原始金额,计算USD价格 df[["currency", "origin_amount"]] = df["price"].str.split(expand=True) df["origin_amount"] = pd.to_numeric(df["origin_amount"]) df["price_usd"] = df["currency"].map(exchange_rate) * df["origin_amount"]
结果验证
最终生成的price_usd列对应数值如下:
- id=1(shirt):4 USD
- id=2(pant):8.54 USD
- id=3(soxs):12.78 USD
- id=4(hat):0.04 USD
如果不需要保留中间拆分的列,也可以用单行简写实现:
df["price_usd"] = df["price"].apply(lambda x: float(x.split()[1]) * exchange_rate[x.split()[0]])
内容的提问来源于stack exchange,提问作者Regnas01
相关产品推荐
相关产品推荐

