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

使用R语言为DataFrame新增COLORS列(基于多列条件)

问题描述

现有如下结构的Pandas DataFrame:

COLUMN_1   COLUMN_2   COLUMN_3
red        blue       green
none       blue       none
red        none       green
red        none       none
none       none       none

需要新增一列COLORS,遵循以下规则:

  • 只要COLUMN_1取值为'red'、COLUMN_2取值为'blue'或COLUMN_3取值为'green',COLORS值为True;当三列均为'none'时,值为False(布尔值版本)。
  • 或满足条件时显示'Color',不满足时显示'No color'(文本版本)。
解决方案

1. 生成布尔值版本的COLORS列

直接通过Pandas的逻辑或操作组合条件,即可得到符合要求的布尔列:

import pandas as pd

# 构造示例DataFrame
data = {
    'COLUMN_1': ['red', 'none', 'red', 'red', 'none'],
    'COLUMN_2': ['blue', 'blue', 'none', 'none', 'none'],
    'COLUMN_3': ['green', 'none', 'green', 'none', 'none']
}
df = pd.DataFrame(data)

# 新增布尔值COLORS列
df['COLORS'] = (df['COLUMN_1'] == 'red') | (df['COLUMN_2'] == 'blue') | (df['COLUMN_3'] == 'green')

print(df)

执行后输出:

COLUMN_1 COLUMN_2 COLUMN_3  COLORS
0      red     blue    green    True
1     none     blue     none    True
2      red     none    green    True
3      red     none     none    True
4     none     none     none   False

2. 生成文本版本的COLORS列

可以用numpy.where将布尔结果映射为指定文本:

import pandas as pd
import numpy as np

# 构造示例DataFrame(同上)
data = {
    'COLUMN_1': ['red', 'none', 'red', 'red', 'none'],
    'COLUMN_2': ['blue', 'blue', 'none', 'none', 'none'],
    'COLUMN_3': ['green', 'none', 'green', 'none', 'none']
}
df = pd.DataFrame(data)

# 新增文本版COLORS列
condition = (df['COLUMN_1'] == 'red') | (df['COLUMN_2'] == 'blue') | (df['COLUMN_3'] == 'green')
df['COLORS'] = np.where(condition, 'Color', 'No color')

print(df)

执行后输出:

COLUMN_1 COLUMN_2 COLUMN_3     COLORS
0      red     blue    green      Color
1     none     blue     none      Color
2      red     none    green      Color
3      red     none     none      Color
4     none     none     none  No color

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:52:22