基于字符长度拆分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
相关产品推荐
相关产品推荐

