You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按规则将Pandas DataFrame拆分为多个含固定列数的小型DataFrame

Pandas DataFrame按规则拆分方案

核心思路

  • 第一步提取所有列名,分离出公共列Title和后续的业务数据列
  • 第二步将业务数据列按每4个为一组做等分切片,自动适配任意数量的文件分组场景
  • 第三步每组数据列前拼接Title列,提取对应数据生成独立的子DataFrame

完整可运行代码

import pandas as pd

# 示例大表构造
thisdict = {'Title': ['aaarrr','hahahamhm','yaaahooo','yaahoo', 'oopsymhm', 'ayorrr'],
        'df1_data1': ['324','123','444','NOTHING', 'NOTHING', 'NOTHING'],
        'df1_data2': ['4314','4321','7658','NOTHING', 'NOTHING', 'NOTHING'],
        'df1_data3': ['342','111','235','NOTHING', 'NOTHING', 'NOTHING'],
        'df1_data4': ['325','542','523','NOTHING', 'NOTHING', 'NOTHING'],
        'df2_data1': ['1','NOTHING','NOTHING','4', '3', 'NOTHING'],
        'df2_data2': ['2','NOTHING','NOTHING','3', '2', 'NOTHING'],
        'df2_data3': ['3','NOTHING','NOTHING','2', '4', 'NOTHING'],
        'df2_data4': ['4','NOTHING','NOTHING','1', '1', 'NOTHING'],
        'df3_data1': ['NOTHING','NOTHING','NOTHING','2', '67', '4'],
        'df3_data2': ['NOTHING','NOTHING','NOTHING','73', '2', '7'],
        'df3_data3': ['NOTHING','NOTHING','NOTHING','2', '4', '5'],
        'df3_data4': ['NOTHING', 'NOTHING', 'NOTHING', '1', '0', '9']
        }
dataframe = pd.DataFrame(thisdict)

# 拆分逻辑
sub_dfs = []
group_size = 4
# 提取除Title外的所有业务列
business_cols = dataframe.columns[1:]
# 按每4列一组拆分
for i in range(0, len(business_cols), group_size):
    current_cols = ['Title'] + business_cols[i:i+group_size].tolist()
    # 生成子DataFrame,加copy避免修改原表
    sub_df = dataframe[current_cols].copy()
    sub_dfs.append(sub_df)

# 测试打印结果
for idx, df in enumerate(sub_dfs):
    print(f"第{idx+1}个拆分后DataFrame列:{df.columns.tolist()}")

效果验证

运行上述代码后输出结果如下,完全符合需求要求:

第1个拆分后DataFrame列:['Title', 'df1_data1', 'df1_data2', 'df1_data3', 'df1_data4']
第2个拆分后DataFrame列:['Title', 'df2_data1', 'df2_data2', 'df2_data3', 'df2_data4']
第3个拆分后DataFrame列:['Title', 'df3_data1', 'df3_data2', 'df3_data3', 'df3_data4']

扩展说明

如果需要更方便的调用子表,可以用字典存储,以分组标识作为key,实现代码如下:

sub_df_dict = {}
for i in range(0, len(business_cols), group_size):
    current_cols = business_cols[i:i+group_size].tolist()
    # 提取df1、df2这类分组前缀作为key
    group_key = current_cols[0].split('_')[0]
    sub_df_dict[group_key] = dataframe[['Title'] + current_cols].copy()

内容的提问来源于stack exchange,提问作者Mteyra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 21:39:03