Python DataFrame特定分组控制需求:自动生成分组且最终非容器类型
嘿,这个需求我刚好处理过类似场景,给你一套完全自动化的解决方案,完美匹配你的要求:
核心思路
先把所有单列DataFrame统一收集到列表里(临时用列表完全没问题),然后通过定义分组规则(临时用字典)来筛选需要的列,最后把筛选后的单列DataFrame拼接成独立的DataFrame——这样最终结果既不是元组/字典/列表,又完全不用手动操作每一列。
完整代码实现
import pandas as pd from sklearn.datasets import load_iris # 替换成你自己的数据集就行,这里用iris做示例 iris = pd.DataFrame(load_iris().data, columns=load_iris().feature_names) # 第一步:自动生成所有单列DataFrame并存入列表,不用手动命名df1、df2...dfn single_col_dfs = [iris.iloc[:, idx:idx+1] for idx in range(iris.shape[1])] # 第二步:定义分组规则,用字典临时存分组名称和对应列的索引 # 你可以根据需求随意添加/修改分组,比如加df_group3、df_group4都没问题 group_configs = { "df_group1": range(len(single_col_dfs)), # 包含所有单列DataFrame "df_group2": [i for i in range(len(single_col_dfs)) if i % 2 == 0] # 包含第1、3...n-1列(对应原问题的df1、df3...) } # 第三步:自动生成每个分组的独立DataFrame,最终结果不是容器类型 for group_name, col_indices in group_configs.items(): # 拼接选中的单列DataFrame grouped_df = pd.concat([single_col_dfs[i] for i in col_indices], axis=1) # 把结果赋值为全局变量,直接就能用df_group1、df_group2调用 globals()[group_name] = grouped_df
验证效果
运行完代码后,你可以直接打印结果确认:
print("df_group1的列:", df_group1.columns.tolist()) print("df_group2的列:", df_group2.columns.tolist())
灵活扩展
如果需要新增分组,比如要一个包含第2、4列的df_group3,只需要在group_configs里加一行:
"df_group3": [i for i in range(len(single_col_dfs)) if i % 2 == 1]
完全不用改其他代码,非常方便。
内容的提问来源于stack exchange,提问作者이상덕
相关产品推荐
相关产品推荐

