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

如何通过循环批量生成DataFrame的指定列组合子集?

嗨,我来帮你解决这个用循环批量生成DataFrame的问题!先理清楚需求和实现方案:

基础DataFrame

首先我们有这个初始的DataFrame(记得先导入依赖库哦):

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,10,size=(100,6)),columns = ['red','blue','yellow','green','purple','total'])
需求说明

你需要实现的核心逻辑是:从原DataFrame中提取某一列和最后一列(total,索引为5),生成多个新的DataFrame,手动写会是这样:

df_red = df[df.columns[[0,5]]]
df_blue = df[df.columns[[1,5]]]
df_yellow = df[df.columns[[2,5]]]
df_green = df[df.columns[[3,5]]]
df_purple = df[df.columns[[4,5]]]

但你希望用循环自动完成,避免手动重复代码,尤其是当列数更多时更高效。

循环实现方案

这里有两种实用的方式,推荐第一种更规范的写法:

方式1:用字典存储生成的DataFrame(推荐)

用字典统一管理这些新的DataFrame是Python中的最佳实践,既整洁又方便后续批量操作:

# 获取除了total列之外的所有颜色列名
color_columns = df.columns[:-1]
# 创建空字典来存放结果
df_collection = {}

# 遍历每个颜色列,生成对应的DataFrame并存入字典
for col_name in color_columns:
    # 直接用列名索引比用数字索引更直观,可读性更强
    df_collection[f'df_{col_name}'] = df[[col_name, 'total']]

# 后续可以通过字典键访问对应的DataFrame,比如查看df_red的前几行
print(df_collection['df_red'].head())

方式2:动态创建独立变量(不推荐,仅作了解)

如果你确实需要单独的全局变量(比如df_red、df_blue),可以用globals()动态创建,但这种方式在复杂项目中容易导致变量混乱,不利于维护:

color_columns = df.columns[:-1]

for col_name in color_columns:
    # 动态创建全局变量
    globals()[f'df_{col_name}'] = df[[col_name, 'total']]

# 现在可以直接使用这些变量
print(df_blue.head())
小提示

用字典存储的方式优势很明显:比如你后续要把所有生成的DataFrame导出为CSV文件,只需要再循环一次字典即可,不需要逐个处理变量,大大提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:46