如何按TITLE列值拆分包含4个不同长度子块的Pandas DataFrame
解决方案
核心使用Pandas的groupby方法实现,无需提前预设子块长度、也无需适配不同表的结构差异,只要待处理表格包含TITLE列即可通用。
基础实现代码
首先导入Pandas库:
import pandas as pd
假设你已经读取目标DataFrame为df,执行以下操作即可完成拆分:
# 按TITLE列分组,生成各子DataFrame字典 split_result = {title_val: sub_df.reset_index(drop=True) for title_val, sub_df in df.groupby("TITLE")}
拆分后得到的split_result是字典结构,键为TITLE列的各个取值,值为该取值对应的子DataFrame,你可以直接通过键名取用对应子表,例如split_result["目标TITLE取值"]。
多表批量处理封装
如果需要处理多张表,可以直接封装为通用函数,批量调用即可:
def split_table_by_title(input_df): # 可选:过滤掉TITLE列为空的无效行 cleaned_df = input_df.dropna(subset=["TITLE"]) return { title_val: sub_df.reset_index(drop=True) for title_val, sub_df in cleaned_df.groupby("TITLE") } # 批量处理示例 # 假设所有待处理的表存在列表df_list中 processed_list = [split_table_by_title(df) for df in df_list]
该方法完全不限制每个TITLE对应的子块长度,也不需要提前知道TITLE的取值数量,适配所有符合要求的表格。
可选优化:处理TITLE列格式问题
如果你的数据里TITLE列存在前后空格、大小写不一致的情况,可以先做格式化预处理,避免拆分出现冗余分组:
# 去除首尾空格+统一转为小写(可根据实际需求调整格式化规则) df["TITLE"] = df["TITLE"].str.strip().str.lower()
内容的提问来源于stack exchange,提问作者Etienne BIHEL
相关产品推荐
相关产品推荐

