如何基于空列分隔符将Pandas DataFrame拆分为多个子DataFrame
Pandas 按空白列拆分多子表DataFrame实现方案
核心实现逻辑:先识别作为分隔符的全空白列,再按分隔位置切割列范围提取对应子表即可,完整实现代码如下:
- 第一步:识别全空白分隔列
import pandas as pd # 替换为你自己的读表代码,无特殊需求建议读入时不指定表头,避免干扰空白列识别 # df = pd.read_excel("你的Excel文件路径.xlsx", header=None) # 定位所有全为空值的分隔列索引 empty_col_indexes = df.columns[df.isna().all()].tolist()
- 第二步:拆分列区间生成独立子表
# 补充首尾边界方便批量切割 split_points = [-1] + empty_col_indexes + [df.shape[1]] product_dfs = [] for i in range(len(split_points)-1): start_col = split_points[i] + 1 end_col = split_points[i+1] # 跳过纯空白区间 if start_col >= end_col: continue # 提取当前子表的所有列 sub_df = df.iloc[:, start_col:end_col].copy() # 可选:删除子表内的全空行 sub_df = sub_df.dropna(how="all").reset_index(drop=True) # 可选:如果子表第一行是表头,放开以下代码设置列名 # sub_df.columns = sub_df.iloc[0].tolist() # sub_df = sub_df[1:].reset_index(drop=True) product_dfs.append(sub_df) # 拆分完成后三个产品的独立DataFrame分别为 product_dfs[0]、product_dfs[1]、product_dfs[2]
- 注意事项
- 若读入Excel时已经指定了表头,空白列会被自动命名为
Unnamed:xx格式,不影响空白列判断逻辑,代码可正常运行 - 不同子表列数不一致的场景也可正常适配,无需额外调整逻辑
- 若读入Excel时已经指定了表头,空白列会被自动命名为
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

