如何对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
相关产品推荐
相关产品推荐

