如何用列表实现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
相关产品推荐
相关产品推荐

