pandas如何实现DataFrame字符串列每8位字符用;分隔
Pandas 实现 Column B 每8位插入分号的方案
直接通过字符串处理逻辑即可实现,提供两种常用实现方式:
- 方式1:逻辑直观的apply写法,适合中小数据量,方便自定义调整规则
import pandas as pd # 构造示例数据 df = pd.DataFrame({ "Column A": ["X , Y"], "Column B": ["123456781234567812345678,123456781234567812345678"] }) def process_str(s): # 先按原有的逗号拆分出独立的长数字段 seg_list = s.split(',') processed_seg = [] for seg in seg_list: # 每8个字符切分,用;拼接 processed_seg.append(';'.join([seg[i:i+8] for i in range(0, len(seg), 8)])) # 还原逗号分隔结构 return ','.join(processed_seg) df["Column B"] = df["Column B"].apply(process_str)
处理后Column B的输出为:12345678;12345678;12345678,12345678;12345678;12345678,和预期结果完全匹配。
- 方式2:正则向量化写法,适合大数据量,性能更高
不需要自定义函数,直接调用pandas内置的字符串正则替换方法即可:
df["Column B"] = df["Column B"].str.replace(r'(.{8})(?!$|,)', r'\1;', regex=True)
正则逻辑:匹配连续8个字符,且该字符段后方不是字符串末尾、也不是逗号,在匹配到的8个字符后插入
;,不会在逗号前后错误插入分隔符。
内容的提问来源于stack exchange,提问作者neosday
相关产品推荐
相关产品推荐

