组合 GroupBy 对象(不是输出而是实际对象)

Combine GroupBy Objects (not the output but the actual objects)

不可否认,这可能不是常见的情况。本质上,我想知道是否有可能采用 groups_1=df.groupby('something')groups_2=df.groupby('something_else') 并将它们放入 groups = [groups_1,groups_2] 以便我可以迭代一个可迭代组对象而不是分别迭代两个对象.这是一个例子:

# create data frame    
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 at two separate frequencies
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 = some_concat_function([groups_1,groups_2])

for label, group in groups:
        # do something here

我认为你可以使用 itertools.chain 来做到这一点:

from itertools import chain

groups = chain(groups_1, groups_2)
...

from itertools import chain

groups = chain.from_iterable([groups_1, groups_2])
...