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

如何基于多条件为Pandas DataFrame高效生成Result列?

Pandas高效生成result列的实现方案

需求说明

给定包含多列(示例为3列,实际50列)的DataFrame,需生成新列result,规则如下:

  • 若该行任意列包含'nok',则result = 'nok'
  • 若该行无'nok'但任意列包含'deact',则result = 'deact'
  • 其余情况result = 'ok'

高效实现代码

由于涉及50列,必须采用矢量化操作(底层C实现,避免Python循环开销),代码如下:

import pandas as pd
import numpy as np

# 构造示例数据
data = [
    ['ok', 'ok', 'ok'],
    ['ok', 'nok', 'nok'],
    ['deact', 'ok', 'ok'],
    ['deact', 'ok', 'nok'],
]
df = pd.DataFrame(data, columns=['col1', 'col2', 'col3'])

# 1. 矢量化判断每行是否存在'nok'
has_nok = df.eq('nok').any(axis=1)
# 2. 矢量化判断每行是否存在'deact'
has_deact = df.eq('deact').any(axis=1)

# 3. 嵌套条件生成result列
df['result'] = np.where(has_nok, 'nok', 
                        np.where(has_deact, 'deact', 'ok'))

结果验证

执行后DataFrame的result列符合预期:

col1col2col3result
okokokok
oknoknoknok
deactokokdeact
deactoknoknok

效率说明

  • df.eq('xxx')快速生成布尔值DataFrame,批量匹配所有列的目标值
  • .any(axis=1)沿行方向判断是否存在匹配值,时间复杂度为O(n)(n为列数)
  • 全程无Python层面的循环,处理50列时效率远高于逐行遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:17