Pyspark实现:判断issue列值是否存在于另一数据集的Trigger列
实现数据集新增check列的方法
现有两个数据集:
第一个触发数据集:
| Trigger A | Trigger B | Trigger C | Trigger D |
|---|---|---|---|
| a | null | null | null |
| null | null | b | null |
| null | c | null | null |
第二个业务数据集:
| header | issue |
|---|---|
| 1 | a |
| 2 | b |
| 3 | x |
| 4 | e |
需求:给第二个数据集新增check列,当issue列的值存在于第一个数据集的任意Trigger列中时返回1,否则返回0。预期结果如下:
| header | issue | check |
|---|---|---|
| 1 | a | 1 |
| 2 | b | 1 |
| 3 | x | 0 |
| 4 | e | 0 |
Excel 实现步骤
- 第一步:提取触发数据集里所有非空值,把Trigger A到D列的非空内容整理到单独区域(比如F列),得到
a、b、c。 - 第二步:在业务数据集的C2单元格输入公式:
=IF(COUNTIF($F$2:$F$4,B2)>0,1,0),下拉填充所有行即可。
Python Pandas 实现代码
import pandas as pd # 构造触发数据集 df_trigger = pd.DataFrame({ 'Trigger A': ['a', None, None], 'Trigger B': [None, None, 'c'], 'Trigger C': [None, 'b', None], 'Trigger D': [None, None, None] }) # 提取所有非空触发值的集合 trigger_values = set(df_trigger.stack().dropna()) # 构造业务数据集 df_issue = pd.DataFrame({ 'header': [1, 2, 3, 4], 'issue': ['a', 'b', 'x', 'e'] }) # 新增check列 df_issue['check'] = df_issue['issue'].apply(lambda x: 1 if x in trigger_values else 0) # 打印结果 print(df_issue)
内容的提问来源于stack exchange,提问作者Nabs335
相关产品推荐
相关产品推荐

