如何基于字符串匹配与数值判断条件创建数据表计算列
需求说明
你需要在现有数据集新增BUSYBOARD列,赋值逻辑为同时满足以下两个条件时取值为1,否则取值为0:
COMMITTEENAME字段值包含Cyber或Technology关键词DIRECTORS字段值大于5
以下是不同使用场景下可直接复用的实现方案:
方案1:Python Pandas 实现(适用于批量数据处理场景)
使用pandas向量化运算实现,代码简洁、处理大规模数据性能好:
import pandas as pd # 替换为你的实际数据集读取路径 df = pd.read_csv("your_dataset_path.csv") # 按规则生成BUSYBOARD列 df["BUSYBOARD"] = ( df["COMMITTEENAME"].str.contains("Cyber|Technology", case=False, na=False) & (df["DIRECTORS"] > 5) ).astype(int) # 验证输出结果,需要保存文件可放开下方注释 print(df) # df.to_csv("result.csv", index=False)
运行后输出和预期完全一致:
COMMITTEENAME DIRECTORS BUSYBOARD 0 Cyber 8 1 1 Technology 3 0 2 Audit 12 0 3 Cyber Safety 4 0 4 Governance 2 0
注:
case=False表示匹配关键词时不区分大小写,需要严格匹配大小写可删除该参数;na=False会将委员会名称为空的记录判定为不匹配关键词,避免运行报错。
方案2:SQL 实现(适用于数据存储在数据库的场景)
数据存在关系型数据库中时,可直接通过CASE WHEN语法查询得到结果:
SELECT COMMITTEENAME, DIRECTORS, CASE WHEN (COMMITTEENAME LIKE '%Cyber%' OR COMMITTEENAME LIKE '%Technology%') AND DIRECTORS > 5 THEN 1 ELSE 0 END AS BUSYBOARD FROM your_table_name;
方案3:Excel/WPS 表格实现(适用于小批量手动处理场景)
假设数据第1行为表头,COMMITTEENAME在A列、DIRECTORS在B列,在C2单元格输入以下公式后下拉填充整列即可:
=IF(AND(OR(ISNUMBER(SEARCH("Cyber",A2)),ISNUMBER(SEARCH("Technology",A2))),B2>5),1,0)
注:SEARCH函数不区分大小写,需要严格匹配大小写可替换为FIND函数。
内容的提问来源于stack exchange,提问作者Robbert
相关产品推荐
相关产品推荐

