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

如何在Python中将pandas DataFrame列按固定字符长度拆分为多列

解决方法

str.split是按指定分隔符拆分文本,不适合固定长度拆分的场景,你可以用str.findall配合正则实现需求,具体实现步骤如下:

  • 第一步:先构造测试用的DataFrame(你自己的项目中可以跳过这步,直接用你已有的df即可)
import pandas as pd
df = pd.DataFrame({
    'id': [1, 2],
    'body': ['abcdefgh', 'xyzk']
})
  • 第二步:执行拆分逻辑,按每3个字符为一块拆分
# 正则`.{1,3}`表示匹配1-3个任意字符,刚好符合固定长度拆分、最后不足3个也保留的需求
split_res = df['body'].str.findall(r'.{1,3}')
# 把拆分得到的列表转为DataFrame,赋值给新列,fillna用于把空缺位置替换为空字符串
df[['body1', 'body2', 'body3']] = pd.DataFrame(split_res.tolist(), index=df.index).fillna('')
  • 输出结果验证:执行后得到的df和你期望的效果完全一致:
id     body body1 body2 body3
0   1  abcdefgh   abc   def    gh
1   2     xyzk   xyz     k      

备选实现:如果你提前确定了最多拆分的列数,也可以用str.extract直接按分组提取,代码更简洁:

df[['body1', 'body2', 'body3']] = df['body'].str.extract(r'(.{1,3})?(.{1,3})?(.{1,3})?').fillna('')

如果后续需要调整拆分的块长度,只需要把正则里的3改成你需要的长度即可,比如要每4个字符拆一块,就改成.{1,4}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:03