如何基于多if条件为DataFrame创建指定规则的新列
实现方法
以下是基于pandas的几种实现方案,按运行效率从高到低排序:
- 方案1:直接赋值+条件筛选(最高效,适合大数据量)
# 先给新列默认赋值为B(覆盖规则1、3的所有情况) df['new_col'] = 'B' # 仅修改满足white为真且black为假的行,赋值为W(匹配规则2) df.loc[(df['white'] == 1) & (df['black'] == 0), 'new_col'] = 'W'
- 方案2:嵌套
np.where实现
import numpy as np df['new_col'] = np.where(df['black'] == 1, 'B', np.where(df['white'] == 1, 'W', 'B'))
- 方案3:
apply自定义函数(可读性最高,小数据量场景可用)
def assign_color(row): if row['black']: return 'B' elif row['white']: return 'W' else: return 'B' df['new_col'] = df.apply(assign_color, axis=1)
补充说明:
所有方案默认black判断优先级高于white,如果某行同时满足black和white为1,会优先赋值为B,符合你给出的规则顺序。
内容的提问来源于stack exchange,提问作者Constellation
相关产品推荐
相关产品推荐

