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

Pandas/Python:如何基于其他列值按条件创建新列BB

实现pandas按条件生成新列BB的方法

你可以通过两种常见方式实现需求,两种方式均能完全匹配你的预期输出:

方式1:向量运算(优先推荐,数据量大时效率更高)

利用numpy数组的索引特性直接批量取值,避免逐行遍历:

import numpy as np

# 提取待匹配的1/2/3列转为numpy数组
val_arr = df[["1", "2", "3"]].values
# TGR1值对应列的索引(1对应0,2对应1,3对应2)
col_index = df["TGR1"] - 1
# 按条件生成BB列
df["BB"] = np.where(df["TGR1"] == 0, 0, val_arr[df.index, col_index])

方式2:apply逐行处理(写法直观,适合小数据量场景)

通过行级apply直接按行规则计算:

df["BB"] = df.apply(
    lambda row: 0 if row["TGR1"] == 0 else row[str(row["TGR1"])],
    axis=1
)

你之前尝试的代码问题在于df.columns == test.TGR1.value是整列比较逻辑,无法实现每行根据TGR1的值取对应列的效果,上述两种方案均可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:00