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

Pandas按分隔符拆分编码并拼接生成标准化编码的实现问题

报错原因

你当前代码触发广播错误的核心问题是:df['tempCol1'].str.rsplit('-', 1)[0]取的是整个Series返回结果的第一个元素,而非每行拆分后的第一个值,导致拼接时维度不匹配。


实现方案

直接写一个适配所有场景的自定义处理函数,覆盖补全/后缀、替换分隔符、保留特殊值的所有需求,避免拆分多列导致的维度问题:

import pandas as pd
import numpy as np

def standardize_code(code):
    # 处理空值、预设特殊值直接返回
    if pd.isna(code) or code in ('dummy', 'unset'):
        return code
    # 先处理/分隔的编码补全逻辑
    if '/' in code:
        part1, part2 = [x.strip() for x in code.split('/', 1)]
        # 取前半段编码最后一个-之前的前缀
        prefix = part1.rsplit('-', 1)[0]
        full_part2 = f"{prefix}-{part2}"
        code = f"{part1};{full_part2}"
    # 替换&、#分隔符为标准分隔符;
    code = code.replace('&', ';').replace('#', ';')
    # 清理编码前后多余空格
    return ';'.join([x.strip() for x in code.split(';')])

# 直接应用函数生成ColB
df['ColB'] = df['ColA'].apply(standardize_code)

如果你的场景里还有其他需要直接保留的特殊字符串,直接补充到函数开头的判断元组中即可。


效果验证

可通过测试用例确认输出符合要求:

# 构造测试数据
test_df = pd.DataFrame({
    'ColA': [
        'k500-899-200 / 300',
        'abc-123&def-456',
        'xyz-789#qwe-101',
        'single-1234',
        np.nan,
        'dummy',
        'unset'
    ]
})
test_df['ColB'] = test_df['ColA'].apply(standardize_code)
print(test_df)

输出结果:

ColA                        ColB
0  k500-899-200 / 300  k500-899-200;k500-899-300
1      abc-123&def-456            abc-123;def-456
2      xyz-789#qwe-101            xyz-789;qwe-101
3          single-1234                 single-1234
4                  NaN                         NaN
5                dummy                       dummy
6                unset                       unset

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:24:00