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

基于字符长度拆分DataFrame记录为多条记录

解决方案:按固定长度拆分DataFrame字符串列并生成序列编号

实现思路

遍历原始DataFrame的每一行,将value列的字符串按每5个字符拆分,为每个片段生成从1开始的顺序编号,保留对应key值后重新组合成目标结构的DataFrame。

代码实现

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'key': ['ABC1', 'XYZ', 'DEF'],
    'value': ['2345DEFMN45671', '56712MNPQR2347762344', '38912JKLTR']
})

# 初始化存储拆分后记录的列表
split_records = []

# 逐行处理字符串拆分与编号
for _, row in df.iterrows():
    current_key = row['key']
    original_value = row['value']
    # 按每5个字符拆分字符串,步长为5
    value_chunks = [original_value[i:i+5] for i in range(0, len(original_value), 5)]
    # 为每个片段添加序列编号并存入列表
    for seq_num, chunk in enumerate(value_chunks, start=1):
        split_records.append({
            'key': current_key,
            'seq': seq_num,
            'value': chunk
        })

# 转换为目标DataFrame并调整列顺序
result_df = pd.DataFrame(split_records)[['key', 'seq', 'value']]

# 打印结果
print(result_df)

输出结果

key  seq    value
0  ABC1    1    2345D
1  ABC1    2    EFMN4
2  ABC1    3    5671
3   XYZ    1    56712
4   XYZ    2    MNPQR
5   XYZ    3    23477
6   XYZ    4    62344
7   DEF    1    38912
8   DEF    2    JKLTR

补充说明

  • 如果需要调整key值(比如将示例中ABC1改为ABC),只需修改current_key = row['key'][:-1]即可
  • 拆分长度可通过修改切片参数(i:i+5中的5)灵活调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:05:17