如何通过循环拼接两组列的非空值生成组合数组输出列
实现思路
- 对每一行数据,先遍历第一组所有列,筛选出非空值存入列表
list1 - 再遍历第二组所有列,筛选出非空值存入列表
list2 - 只要
list1或list2任意一个为空,直接返回空字符串 - 若两个列表都非空,通过两层嵌套循环遍历两个列表的所有元素组合,按照
元素1|元素2的格式拼接存入结果列表 - 最后将结果列表格式化为要求的字符串输出即可
Python 实现示例(基于Pandas处理表格数据)
import pandas as pd import numpy as np # 构造测试输入数据 df = pd.DataFrame({ 'Column1a': ['123A', '3456', 'WERT', np.nan], 'Column1b': ['QWER', '89AS', np.nan, np.nan], 'Column2a': ['ERTY', np.nan, '1234', 'CVBT'], 'Column2b': ['1256Y', np.nan, '9087', np.nan], 'Column2c': ['234', np.nan, np.nan, np.nan] }) # 定义两组列的列名 group1_cols = ['Column1a', 'Column1b'] group2_cols = ['Column2a', 'Column2b', 'Column2c'] def gen_output(row): # 提取第一组非空值 list1 = [] for col in group1_cols: val = row[col] if pd.notna(val) and str(val).strip() != '': list1.append(str(val).strip()) # 提取第二组非空值 list2 = [] for col in group2_cols: val = row[col] if pd.notna(val) and str(val).strip() != '': list2.append(str(val).strip()) # 任意一组为空直接返回空字符串 if not list1 or not list2: return '""' # 两层循环生成所有组合 res = [] for a in list1: for b in list2: res.append(f"{a}|{b}") # 格式化输出格式 return str(res).replace("'", '"') # 应用到每一行生成结果列 df['OUTPUT'] = df.apply(gen_output, axis=1) # 打印输出结果 print(df['OUTPUT'])
运行结果
0 ["123A|ERTY","123A|1256Y","123A|234","QWER|ERTY","QWER|1256Y","QWER|234"] 1 "" 2 ["WERT|1234","WERT|9087"] 3 "" Name: OUTPUT, dtype: object
其他语言适配
上述逻辑可以直接迁移到任意编程语言,核心逻辑不变,仅需要根据对应语言的语法调整数据读取、字符串处理的写法即可。
内容的提问来源于stack exchange,提问作者Cuckoo
相关产品推荐
相关产品推荐

