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

如何将DataFrame列中字符串按固定长度拆分并扩展为多行?

解决DataFrame按固定长度拆分字符串并扩展行的问题

可以用两种简洁的方法实现需求,无需复杂操作:

方法一:列表推导式切片拆分

直接对Pay Grade列的每个字符串按每2个字符切片,空字符串单独保留,再用explode()扩展成行:

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    'Employee': ['John', 'Kathy', 'Tom'],
    'Pay Grade': ['7A5B', '', '9A9B4C']
})

# 拆分字符串:每2个字符一组,空值保留为['']
df['Pay Grade'] = df['Pay Grade'].apply(
    lambda x: [x[i:i+2] for i in range(0, len(x), 2)] if x else ['']
)

# 扩展为多行
df = df.explode('Pay Grade').reset_index(drop=True)

print(df)

方法二:正则匹配+extractall

利用正则表达式匹配每两位字符,通过extractall()提取所有匹配项,再合并回原表:

import pandas as pd

df = pd.DataFrame({
    'Employee': ['John', 'Kathy', 'Tom'],
    'Pay Grade': ['7A5B', '', '9A9B4C']
})

# 提取每两位字符,生成多行结果
extracted = df['Pay Grade'].str.extractall(r'([A-Z0-9]{2})').reset_index(level=1, drop=True)
# 关联原表并填充空值
result = df.join(extracted).rename(columns={0: 'Split_Pay'})
result['Pay Grade'] = result['Split_Pay'].fillna(result['Pay Grade'])
# 清理多余列并重置索引
result = result.drop('Split_Pay', axis=1).reset_index(drop=True)

print(result)

两种方法都能完美处理长度为0、2、4、6的字符串,输出结果与期望完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:47:28