使用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
相关产品推荐
相关产品推荐

