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

如何用列表实现Pandas DataFrame分组批量生成子数据框

按列值批量拆分Pandas DataFrame实现方法

你不需要额外找特殊函数,df.groupby("x")本身就支持批量生成所有分组对应的子DataFrame,不需要手动逐个定义变量,以下是两种常用实现:

方案1:字典存储(最推荐)

把所有拆分后的子DataFrame存在字典里,用x列的取值作为键,后续调用、批量处理都非常方便,不会污染全局变量空间:

# 按x列分组,批量生成所有子df存入字典
df_dict = {x_value: sub_df.reset_index(drop=True) for x_value, sub_df in df.groupby("x")}

使用时直接通过x的取值取对应子表即可,比如要获取x=1对应的子表,直接调用df_dict[1],和你预期的df1(x=1)效果完全一致。不管x列有多少个不同取值,这行代码都能一次性完成拆分,不需要提前枚举x的所有可能值。
如果需要对所有子表做统一处理,直接遍历df_dict.values()即可,不需要逐个操作单独变量。

方案2:动态生成独立变量(不推荐)

如果你一定要生成df_1、df_3这类独立命名的变量,可以通过动态赋值实现:

for x_value, sub_df in df.groupby("x"):
    globals()[f"df_{x_value}"] = sub_df.reset_index(drop=True)

运行后当前环境就会自动生成所有对应x取值的子DataFrame变量,直接调用df_1就能拿到x=1对应的子表。但这种方式生成的变量过多时不好管理,批量处理也麻烦,非特殊需求不建议用。

注:代码里的reset_index(drop=True)是用来重置子表的索引,避免保留原始DataFrame的行索引,不需要可以直接删掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:27:21