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

如何对DataFrame列中的字符串按每6位分割并生成HS编码列表?

分割DataFrame列字符串为6位分段的HS编码列表

你的原代码存在语法错误,索引方式、循环逻辑都不符合pandas的使用规范,以下是两种可行的修正方案:

方案一:自定义切片函数

通过apply调用自定义函数,对每个字符串按6位步长切片后用逗号连接:

import pandas as pd

# 示例DataFrame(替换成你的实际数据)
df = pd.DataFrame({'hs_code_str': ['123456789012', '9876543210']})

def split_hs_code(s):
    # 按每6位分割,保留所有分段(包括不足6位的末尾部分)
    segments = [s[i:i+6] for i in range(0, len(s), 6)]
    return ','.join(segments)

# 生成新列存储处理后的HS编码列表(逗号分隔格式)
df['hs_code_list'] = df['hs_code_str'].apply(split_hs_code)

如果需要过滤掉不足6位的分段,修改列表推导式为:

segments = [s[i:i+6] for i in range(0, len(s), 6) if len(s[i:i+6]) == 6]

方案二:正则表达式简化实现

用正则表达式快速匹配分段,代码更简洁:

import pandas as pd
import re

df = pd.DataFrame({'hs_code_str': ['123456789012', '9876543210']})
# 用正则匹配最多6位的连续字符,再用逗号连接
df['hs_code_list'] = df['hs_code_str'].apply(lambda x: ','.join(re.findall(r'.{1,6}', x)))

如果需要生成Python列表格式而非逗号分隔的字符串,去掉','.join()即可,例如:

df['hs_code_list'] = df['hs_code_str'].apply(lambda x: re.findall(r'.{1,6}', x))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:50:14