You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环拼接两组列的非空值生成组合数组输出列

实现思路
  • 对每一行数据,先遍历第一组所有列,筛选出非空值存入列表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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:45:03