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

如何在Pandas中拆分并拼接逗号分隔文本与对应列文本

Pandas实现多列逗号分隔文本按位置配对拼接

核心思路

对每行的目标列按逗号拆分为列表,按位置将各列的对应元素拼接成「国家,客户ID,账户类型」格式,再用「 - 」连接所有拼接结果,全程动态适配每行的分隔项数量,无需提前拆分固定列数。

示例代码

1. 构造示例数据

import pandas as pd

df = pd.DataFrame({
    'CNTRY': ['JO,AE,QA', 'US,CA'],
    'CUSTOMERID': ['HJM23,JKU78,OI9PUJ', 'AB12,CD34'],
    'ACC_TYPE': ['AH,SH,AS', 'XX,YY']
})

2. 定义行处理函数

def combine_row(row):
    # 拆分各列为元素列表
    cntry_items = row['CNTRY'].split(',')
    cust_items = row['CUSTOMERID'].split(',')
    acc_items = row['ACC_TYPE'].split(',')
    # 按位置配对并拼接成指定格式
    paired_groups = [f"{c},{cid},{acc}" for c, cid, acc in zip(cntry_items, cust_items, acc_items)]
    # 用" - "连接所有配对结果
    return ' - '.join(paired_groups)

3. 应用函数到每行

df['COMBINED_RESULT'] = df.apply(combine_row, axis=1)

输出结果

处理后的DataFrame:

CNTRYCUSTOMERIDACC_TYPECOMBINED_RESULT
JO,AE,QAHJM23,JKU78,OI9PUJAH,SH,ASJO,HJM23,AH - AE,JKU78,SH - QA,OI9PUJ,AS
US,CAAB12,CD34XX,YYUS,AB12,XX - CA,CD34,YY

适配列长度不一致的情况

如果存在某行各列拆分后的列表长度不同,可使用itertools.zip_longest补全空值:

from itertools import zip_longest

def combine_row(row):
    cntry_items = row['CNTRY'].split(',')
    cust_items = row['CUSTOMERID'].split(',')
    acc_items = row['ACC_TYPE'].split(',')
    # 长度不足的位置补空字符串,避免报错
    paired_groups = [f"{c},{cid},{acc}" for c, cid, acc in zip_longest(cntry_items, cust_items, acc_items, fillvalue='')]
    return ' - '.join(paired_groups)

内容的提问来源于stack exchange,提问作者Henry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:42:16