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

如何合并多个Pandas GroupBy对象实现统一迭代处理

合并多个Pandas GroupBy对象的实现方案

Pandas的GroupBy对象原生支持迭代,每次迭代返回(分组标签, 分组DataFrame)格式的元组,因此可以直接通过Python标准库的迭代器拼接工具实现需求,不需要额外依赖。

最简实现方案

用itertools.chain.from_iterable直接拼接多个GroupBy的迭代器:

import itertools

def concat_groupbys(groupby_list):
    return itertools.chain.from_iterable(groupby_list)

调用示例

完全匹配需求的调用逻辑:

import pandas as pd
import numpy as np

# 构造测试数据
df = pd.DataFrame({'A':np.random.random(20), 'B':np.random.random(20), 'date':pd.date_range("2021-05-01",periods = 20, freq='2W')})

# 生成两个独立GroupBy对象
groups_1 = df.loc[df.date<'2021-11-01',:].groupby(pd.Grouper(key='date', freq='M'))
groups_2 = df.loc[df.date>='2021-11-01',:].groupby(pd.Grouper(key='date', freq='2W'))

# 合并分组
groups = concat_groupbys([groups_1, groups_2])

# 单次遍历处理所有分组
for label, group in groups:
    # 此处编写分组处理逻辑
    print(f"分组标签: {label}, 分组数据量: {len(group)}")

注意事项

  • 迭代器默认只能遍历一次,如果需要多次复用合并后的分组,可将结果转为列表存储:
    groups = list(concat_groupbys([groups_1, groups_2]))
    
  • 该方法采用惰性计算,仅在迭代时才会生成对应分组的数据,内存开销极低,适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:03