Python中如何拆分矩阵并将c1与其余列组合存为独立DataFrame?
Python实现固定列与其余列两两组合拆分独立DataFrame
核心基于pandas实现,优先推荐用字典存储拆分后的DataFrame,避免动态生成零散变量带来的命名空间污染、难以批量维护的问题。
完整实现步骤
- 第一步:导入依赖,构造/读取原始数据
import pandas as pd import numpy as np # 示例:构造和描述场景一致的原始表,共c1~c50 50列、4行数据 raw_df = pd.DataFrame( np.random.randint(1, 500, size=(4, 50)), columns=[f"c{i}" for i in range(1, 51)] )
- 第二步:循环拆分生成子DataFrame,存入字典
# 初始化存储容器,key为自定义的DataFrame名称,value为拆分后的子表 split_df_map = {} # 固定保留c1列,遍历c2到c50的所有列 for target_col in raw_df.columns[1:]: # 切片取c1+当前遍历列,copy是为了避免后续修改子表影响原始数据 sub_df = raw_df[["c1", target_col]].copy() # 按规则命名,比如c1和c2组合的表命名为df_c1_c2 df_name = f"df_c1_{target_col}" split_df_map[df_name] = sub_df
- 第三步:调用使用
需要取对应子表时,直接通过key索引即可,比如获取c1和c10组合的表:
# 取c1与c10组合的DataFrame c1_c10_df = split_df_map["df_c1_c10"]
如果需要批量处理所有拆分后的表,直接遍历字典即可,无需手动逐个调用变量。
特殊场景:动态生成独立变量(不推荐)
如果必须要生成独立命名的全局变量(存在命名冲突、后期维护成本高的风险),可以通过修改全局命名空间实现:
警告:该方式仅适用于临时快速脚本,正式生产代码禁止使用
for target_col in raw_df.columns[1:]: sub_df = raw_df[["c1", target_col]].copy() df_name = f"df_c1_{target_col}" # 动态注册为全局变量 globals()[df_name] = sub_df # 执行后可以直接调用变量名,比如print(df_c1_c5)即可打印对应表
内容的提问来源于stack exchange,提问作者Dan_N
相关产品推荐
相关产品推荐

