python - 组合 GroupBy 对象(不是输出,而是实际对象)
问题描述
诚然,这可能不是一个常见的情况。本质上,我想知道是否可以将它们放入其中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])
...