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

Pandas中如何通过IF/ELSE逻辑根据列值求和结果新增字符串列

Pandas新增条件判断列实现方案

你的判断逻辑(KIDS、TEENS两列数值之和大于0则标记有子女,否则标记无子女)是完全成立的,但不推荐使用Python原生逐行if循环处理DataFrame,这类场景用pandas/numpy的向量化接口效率更高,代码也更简洁。

推荐实现方式(性能最优)

使用numpy.where做二元条件判断,是这类场景的标准写法,代码如下:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'NAME': ['Steve', 'John', 'Peter', 'Frank', 'Jessica', 'Donny'],
    'KIDS': [1, 0, 0, 0, 1, 0],
    'TEENS': [0, 1, 2, 0, 0, 0]
})

# 新增CHILDREN列
df['CHILDREN'] = np.where(df['KIDS'] + df['TEENS'] > 0, 'YES', 'NO')

numpy.where是底层优化过的向量化运算,逻辑为逐元素匹配判断条件:满足KIDS + TEENS > 0的行返回YES,不满足的返回NO,即使是十万级以上的数据量也能快速跑完。

适配原生if逻辑的写法(小数据量可用)

如果你更习惯写显式if判断的函数逻辑,可以用apply方法逐行传入判断函数,注意这种方式性能弱于上面的向量化实现,仅适合千行以内的小数据集场景:

def check_children(row):
    if row['KIDS'] + row['TEENS'] > 0:
        return 'YES'
    return 'NO'

df['CHILDREN'] = df.apply(check_children, axis=1)

避坑提示:不要写原生for循环遍历DataFrame行索引再逐行赋值,这种写法完全没有利用pandas的底层优化,数据量稍大就会运行极慢。

运行以上任意一段代码,都能得到你期望的输出结果:

NAME  KIDS  TEENS CHILDREN
0    Steve     1      0      YES
1     John     0      1      YES
2    Peter     0      2      YES
3    Frank     0      0       NO
4  Jessica     1      0      YES
5    Donny     0      0       NO

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:45:30