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

如何基于多列条件创建新列并引用Count列的值?

解决Pandas按条件生成新列的问题

方法1:使用np.select(适配你的原有思路)

你只需要把np.select的values参数里的固定值替换成Count列即可,默认值设为0。

示例代码

import pandas as pd
import numpy as np

# 构造测试数据
df = pd.DataFrame({
    'Type': ['A', 'B', 'C', 'A', 'B'],
    'Set': ['Z', 'Z', 'Z', 'X', 'Y'],
    'Count': [10, 20, 30, 40, 50]
})

# 定义条件列表
conditions = [
    (df['Type'] == 'A') & (df['Set'] == 'Z'),
    (df['Type'] == 'B') & (df['Set'] == 'Z')
]

# 对应条件的取值,直接引用Count列
values = [df['Count'], df['Count']]

# 生成New列,不满足条件时取0
df['New'] = np.select(conditions, values, default=0)

输出结果

TypeSetCountNew
AZ1010
BZ2020
CZ300
AX400
BY500

方法2:布尔索引(更简洁的写法)

也可以直接用布尔条件筛选,赋值Count列,其余位置填充0:

df['New'] = 0  # 先默认设为0
# 满足条件的行赋值为Count的值
mask = (df['Type'].isin(['A', 'B'])) & (df['Set'] == 'Z')
df.loc[mask, 'New'] = df.loc[mask, 'Count']

这个方法逻辑更直观,代码量也更少,效果和上面完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:05:32