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

Python Pandas如何基于多列值为DataFrame新增货币转换计算列

Pandas 逐行货币转换实现方案

你之前用map处理拿不到同行货币值的问题,核心是map只能处理单列数据,没法关联同行其他字段,用下面两种方案都能直接跑通:

方案1:全量逐行计算(代码最简洁,适合小数据集)

直接按行遍历判断,逻辑和需求完全对齐:

# 替换成你需要的目标货币,比如转换为美元就填"USD"
conv_currency = "CNY"

df[f'currency({conv_currency})'] = df.apply(
    lambda r: None if r["currency"] == conv_currency else converter(r["currency"], conv_currency, r["price"]),
    axis=1
)

参数说明:axis=1代表按行遍历,lambda里的r就是当前行对象,可以直接通过列名取到同行的货币类型、价格两个字段,刚好匹配转换函数的三个入参要求。

方案2:仅计算需要转换的行(性能更优,适合万行以上大数据集)

你之前写的loc筛选思路是对的,只要调整下赋值逻辑即可,不需要对已经是目标货币的行做无效计算:

conv_currency = "CNY"
# 先把整列初始化为None
df[f'currency({conv_currency})'] = None
# 筛选出所有非目标货币的行,单独计算转换值
convert_mask = df["currency"] != conv_currency
df.loc[convert_mask, f'currency({conv_currency})'] = df[convert_mask].apply(
    lambda r: converter(r["currency"], conv_currency, r["price"]),
    axis=1
)

注意事项

  • 不要单独对price列调用map:map只能拿到当前列的价格值,没法获取同行的货币类型字段,自然没法凑齐转换函数的入参
  • 注意变量名统一:你贴的迭代代码里一会儿用conv_cur一会儿用conv_currency,很容易触发变量未定义的报错
  • 如果你的转换函数是调用第三方接口,数据量较大时建议先按货币类型分组,统一拉取对应汇率后做批量计算,能大幅减少接口调用次数,提升运行速度

内容的提问来源于stack exchange,提问作者Kris Bell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:48:19