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

如何遍历DataFrame并根据每行所属国家修改对应影片的budget数值

实现方案

Pandas 优先使用向量化操作实现需求,效率远高于逐行遍历,以下是具体步骤:

步骤1:准备国家-汇率映射字典

先定义你需要的汇率规则,比如要统一将所有预算转换为美元的话,映射规则为「1单位该国货币可兑换的美元数额」,示例如下:

# 可根据你的转换需求调整汇率值、以及补全所有出现过的国家对应的汇率
country_to_usd_rate = {
    "USA": 1,
    "UK": 1.27,
    "China": 0.14,
    "France": 1.09,
    "Japan": 0.0069
}

步骤2:计算调整后的预算

方案A:向量化映射(最高效,推荐)

直接通过map方法匹配对应国家的汇率后计算,1行代码即可完成:

# 生成新字段存储统一单位后的预算,也可直接覆盖原budget字段
df["adjusted_budget"] = df["budget"] * df["country"].map(country_to_usd_rate)

# 若要处理映射中不存在的国家,可补充fillna设置默认汇率
df["adjusted_budget"] = df["budget"] * df["country"].map(country_to_usd_rate).fillna(1)

方案B:apply 逐行处理(适合复杂逻辑)

如果调整规则不只是简单乘汇率(比如部分国家有特殊换算规则),可以用apply实现逐行判断:

def calc_adjusted_budget(row):
    # 可在这里扩展任意自定义逻辑
    rate = country_to_usd_rate.get(row["country"], 1)
    return row["budget"] * rate

df["adjusted_budget"] = df.apply(calc_adjusted_budget, axis=1)

方案C:iterrows 遍历(仅适合极小数据集,不推荐)

如果必须手动遍历行,可以用iterrows实现,但大数据量下性能极差,优先选前两种方案:

for idx, row in df.iterrows():
    rate = country_to_usd_rate.get(row["country"], 1)
    df.loc[idx, "adjusted_budget"] = row["budget"] * rate

注意事项

  • 提前用df["country"].unique()查看数据集里所有出现的国家,补全映射字典里的汇率,避免出现空值
  • 如果需要转换为其他基准货币(比如人民币),只需修改映射字典里的汇率为对应国家货币兑人民币的数值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:48:04