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

基于DataFrame多列生成新列:按a、b列值添加c列

问题与解决方案

原始DataFrame

ab
120
121
00

需求

新增一列c:当a或b任意一列非零时,c取值yes;当a和b同时为零时,c取值no,最终结果如下:

abc
120yes
121yes
00no

解决方案

方法1:简洁高效的numpy.where

直接通过逻辑表达式完成条件判断与赋值,代码直观易懂:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({'a': [12, 1, 0], 'b': [0, 21, 0]})

# 添加目标列c
df['c'] = np.where((df['a'] != 0) | (df['b'] != 0), 'yes', 'no')

方法2:利用any方法快速判断行内非零值

如果需要判断的列不止a和b,这个方法扩展性更强,一行代码搞定:

df['c'] = df.any(axis=1).map({True: 'yes', False: 'no'})

df.any(axis=1)会逐行检查是否存在非零值,返回布尔序列,再通过map转换为需要的字符串。

方法3:apply自定义函数(适配复杂逻辑)

如果后续规则有更复杂的变化,可以用自定义函数逐行处理:

def determine_c(row):
    return 'yes' if row['a'] != 0 or row['b'] != 0 else 'no'

df['c'] = df.apply(determine_c, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:39:32