如何判断列编码为3位数字并提取首位生成新的team列
实现team列的具体方案
核心逻辑
判断编码是否同时满足两个条件:1. 去除首尾空格后长度为3;2. 内容为纯数字。满足则取编码第一位作为team值,否则返回NULL。
不同场景实现代码
Azure 数据流派生列表达式(对应你当前使用的数据流场景)
直接在派生列中写入如下表达式即可,将其中的code替换为你实际的编码字段名:
iif(length(trim(code)) == 3 && isInteger(code), left(trim(code), 1), toString(null()))
SQL 实现
如果可以通过SQL脚本处理数据,可用如下语句:
SELECT 其他字段, CASE WHEN LENGTH(TRIM(code)) = 3 AND code REGEXP '^[0-9]{3}$' THEN LEFT(TRIM(code),1) ELSE NULL END AS team FROM 你的表名
Python Pandas 实现
如果用Python处理数据,可参考如下代码:
import pandas as pd import numpy as np df['team'] = np.where( (df['code'].astype(str).str.strip().str.len() == 3) & (df['code'].astype(str).str.strip().str.isdigit()), df['code'].astype(str).str.strip().str[0], np.nan )
效果验证
规则匹配测试:
- 编码
315:符合规则,team值为3- 编码
240:符合规则,team值为2- 编码
3300:长度不符,team值为NULL- 编码
12x:非纯数字,team值为NULL
内容的提问来源于stack exchange,提问作者Youri
相关产品推荐
相关产品推荐

