如何将不同列数的异构记录拆分到不同DataFrame中
拆分不同列数记录的实现方法
如果你的原始数据以+作为列分隔符,不同行拆分后列数不统一,不要直接用pd.read_csv指定sep="+"读取(会触发列数不匹配报错、数据错位),按以下步骤处理即可拆分出两个独立DataFrame:
- 先把所有数据按整行读入,存为只有1列的临时DataFrame,列名可以自定义比如
raw_content - 逐行计算按
+拆分后的字段数量 - 按字段数量筛选对应行,再拆分展开为多列,得到结构一致的独立DataFrame
完整参考代码:
import pandas as pd # 整行读入原始数据,不要指定+为分隔符 # 如果是本地文本文件,取消注释下面这行替换路径即可 # raw_df = pd.read_csv("你的数据文件路径", sep="\n", header=None, names=["raw_content"]) # 计算每行按+拆分后的列数 raw_df["field_num"] = raw_df["raw_content"].str.split("+").str.len() # 筛选拆分后为4列的记录,展开为标准结构DataFrame df_4cols = raw_df[raw_df["field_num"] == 4]["raw_content"].str.split("+", expand=True) # 可根据实际业务含义给列重命名,示例如下 # df_4cols.columns = ["序号", "名称", "数值", "备注"] # 筛选拆分后为5列的记录,展开为标准结构DataFrame df_5cols = raw_df[raw_df["field_num"] == 5]["raw_content"].str.split("+", expand=True) # 可根据实际业务含义给列重命名,示例如下 # df_5cols.columns = ["序号", "名称", "类型", "数值", "备注"]
补充注意点:
- 如果后续需要处理其他列数的异常行,复用相同逻辑,筛选
field_num对应数值的行拆分即可 - 拆分完成后可以根据需要做字段类型转换,比如把数字类字段从默认的字符串格式转为整数、浮点数格式
内容的提问来源于stack exchange,提问作者Saro
相关产品推荐
相关产品推荐

