如何将含105列的DataFrame拆分为10个带固定前5列的子DataFrame
Pandas 固定列保留的DataFrame拆分实现
实现代码如下:
import pandas as pd import numpy as np # 此处替换为你自己的原始大DataFrame即可 # 下方为测试用构造代码,可删除 bigdf = pd.DataFrame(np.random.randn(10, 105), columns=range(105)) # 提取固定保留的前5列 fixed_cols = bigdf.columns[:5] # 提取剩余待分组的动态列 dynamic_cols = bigdf.columns[5:] # 按每10列一组切割动态列,共生成10组 grouped_dynamic = [dynamic_cols[i*10 : (i+1)*10] for i in range(10)] # 拼接生成子DataFrame列表,small_dfs[0]对应第一个子df,以此类推 small_dfs = [pd.concat([bigdf[fixed_cols], bigdf[dyn_cols]], axis=1) for dyn_cols in grouped_dynamic]
如果你需要按命名规则存为字典格式,可使用如下代码:
small_df_dict = {f"smalldf{i+1}": pd.concat([bigdf[fixed_cols], bigdf[dyn_cols]], axis=1) for i, dyn_cols in enumerate(grouped_dynamic)}
验证说明
用你给出的25列测试示例运行代码,输出结果完全匹配需求:
small_dfs[0].columns输出:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]small_dfs[1].columns输出:[0,1,2,3,4,15,16,17,18,19,20,21,22,23,24]
通用适配提示
如果后续原始DataFrame的总列数有调整,将代码中range(10)替换为range(len(dynamic_cols)//10)即可自动适配分组数量,无需手动修改分组参数。
内容的提问来源于stack exchange,提问作者zillur rahman
相关产品推荐
相关产品推荐

