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

Pandas map传入多Series参数按国家规则计算新增day列的实现方法

Pandas多列关联计算新增列解决方案

你之前写法出错的原因是:country_in_deliever(df['Country'],df['Deliver'])是直接把两列整个Series作为参数执行函数,没有按行传入单个单元格值,且map方法仅支持对单列做映射,无法直接传入多列参数。


方案1:直接用行遍历apply适配现有函数

不需要修改你已经写好的country_in_deliever函数,直接用DataFrame的apply方法指定按行处理即可,1000行数据的场景下性能完全够用:

# axis=1 表示按行遍历,row代表当前行的Series对象
df['day'] = df.apply(lambda row: country_in_deliever(row['Country'], row['Deliver']), axis=1)

方案2:函数字典映射简化判断逻辑

如果后续国家规则继续增加,大量if elif会提升维护成本,可以把国家和对应处理函数做成字典映射,后续新增国家只需新增字典键值对即可,不用修改判断逻辑:

# 建立国家与处理函数的映射关系
country_func_map = {
    'Us': Us,
    'Hk': Hk
    # 后续新增国家直接在这里加键值对即可
}

df['day'] = df.apply(lambda row: country_func_map[row['Country']](row['Deliver']), axis=1)

两种方案运行后都可以得到你预期的结果:

索引CountryDeliverday
0Us23
1Hk35

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:00:00