如何将分号分隔字符串按每10项分行生成Pandas DataFrame
解决方法
步骤1:分割字符串为元素列表
先把原始字符串按分号;拆分,得到包含所有元素的列表。如果原字符串首尾有多余分号,可选择性过滤空元素:
import pandas as pd # 原始字符串 raw_str = ";2;613;12;1;Ajc hw EEE;13;.387639;1;EXP;13;2;128;12;1;NNN XX Ajc;13;.208966;1;SGX;13;.." # 按分号分割成列表 elements = raw_str.split(';') # 过滤空字符串(可选操作,根据需求决定是否保留空值) elements = [elem for elem in elements if elem]
步骤2:按每10个元素分组
将分割后的列表按每10个元素为一组拆分,自动处理最后一组不足10个元素的情况:
chunk_size = 10 # 按固定大小切片生成多行数据 rows = [elements[i:i+chunk_size] for i in range(0, len(elements), chunk_size)]
步骤3:转换为Pandas DataFrame
直接将分组后的列表传入pd.DataFrame,自动生成结构化表格,也可手动指定列名:
# 生成DataFrame df = pd.DataFrame(rows) # 查看结果 print(df)
输出示例
运行后得到的DataFrame结构如下:
0 1 2 3 4 5 6 7 8 9 0 2 613 12 1 Ajc hw EEE 13 .387639 1 EXP 13 1 2 128 12 1 NNN XX Ajc 13 .208966 1 SGX 13 2 .. NaN NaN NaN NaN NaN NaN NaN NaN NaN
额外处理:还原带分号的行格式
如果需要还原成你预期的带分号拼接的字符串格式,可通过以下代码实现:
# 每行元素用分号连接,开头补分号匹配预期格式 formatted_rows = [';' + ';'.join(row) + ';' for row in rows] for row in formatted_rows: print(row)
输出结果:
;2;613;12;1;Ajc hw EEE;13;.387639;1;EXP;13; ;2;128;12;1;NNN XX Ajc;13;.208966;1;SGX;13; ;..;
内容的提问来源于stack exchange,提问作者anarchy
相关产品推荐
相关产品推荐

