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

如何在不遍历行的情况下为Pandas DataFrame实现指定映射?

解决方案

可以利用Pandas的矢量化字符串方法结合numpy的条件处理能力,完全避免逐行遍历,效率远高于循环:

方法一:用np.select实现多条件映射

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({'id': [1,2,3], 'letter': ['x,y', 'z', 'a']})

# 定义判断条件与对应值
conditions = [
    df['letter'].str.contains('x'),
    df['letter'].str.contains('z')
]
values = [1, 2]

# 生成map列,未匹配的情况默认赋值0
df['map'] = np.select(conditions, values, default=0)

方法二:链式布尔索引赋值

也可以通过布尔索引直接批量赋值,注意条件顺序(优先级高的条件后执行,避免被覆盖):

df['map'] = 0  # 先设置全局默认值
df.loc[df['letter'].str.contains('z'), 'map'] = 2
df.loc[df['letter'].str.contains('x'), 'map'] = 1  # 后处理x的条件,保证其优先级

两种方法都能得到目标结果:

idlettermap
1x,y1
2z2
3a0

关键说明

  • str.contains是Pandas原生的矢量化字符串方法,会对整列数据批量执行包含判断,返回布尔数组,无需逐行操作
  • np.select适合多分支的条件映射场景,按条件顺序依次匹配赋值
  • 链式赋值时,优先级高的条件要放在后面执行,确保其结果不会被低优先级条件覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:55:23