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

如何在Pandas中基于多条件判断为DataFrame添加新列

你可以用两种方式实现需求,都比你原来逐行写简洁很多:

首先明确你原有代码的两个问题:

  1. 多值等值判断不能直接在条件里列多个值,需要用Series.isin()方法
  2. loc第二个参数指定要赋值的列时,直接传列名字符串'destination_country'即可,不需要传df['destination_country']

方法1:用isin()批量匹配同返回值的条件

适合少数几个州对应同一个国家的场景,修改后可直接运行:

# 批量给TX/IA/MS三个州赋值国家为US
df.loc[df['destination_state'].isin(['TX', 'IA', 'MS']), 'destination_country'] = 'US'
# 剩余两个单独赋值即可
df.loc[df['destination_state'] == 'AUK', 'destination_country'] = 'NZ'
df.loc[df['destination_state'] == 'AB', 'destination_country'] = 'CA'

方法2:用映射字典+map()方法(更适合多对应关系场景,扩展性更强)

如果后续还有更多州和国家的对应关系要加,直接维护映射字典就行,代码更简洁易读,处理7k行数据性能没有任何问题:

# 先定义州到国家的映射关系
state_country_map = {
    'TX': 'US',
    'IA': 'US',
    'MS': 'US',
    'AB': 'CA',
    'AUK': 'NZ'
}
# 直接生成新列
df['destination_country'] = df['destination_state'].map(state_country_map)

如果存在映射字典里没有覆盖的州,map()会返回NaN,你可以根据需求加fillna()设置默认值,比如:

# 未匹配到的州默认填充为未知
df['destination_country'] = df['destination_state'].map(state_country_map).fillna('未知')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:03