Python 在熊猫中找到同名的群体?

Python 在熊猫中找到同名的群体?,python,for-loop,pandas,grouping,Python,For Loop,Pandas,Grouping,我有两个数据帧,我使用它们的月份将它们分为两组: grouped1 = data1[key].set_index('Time').groupby(pd.TimeGrouper(freq='M')) grouped2 = data2[key].set_index('Time').groupby(pd.TimeGrouper(freq='M')) grouped2可能拥有比grouped1更多的组,反之亦然。我想在分组的数据帧之间共享相同名称的组上运行stats 例如,如果grouped1有一个名

我有两个数据帧,我使用它们的月份将它们分为两组:

grouped1 = data1[key].set_index('Time').groupby(pd.TimeGrouper(freq='M'))
grouped2 = data2[key].set_index('Time').groupby(pd.TimeGrouper(freq='M'))
grouped2
可能拥有比
grouped1
更多的组,反之亦然。我想在分组的数据帧之间共享相同名称的组上运行stats

例如,如果
grouped1
有一个名为
April
的组,
grouped2
有一个名为
April
的组,我想对这些组运行统计信息。我想循环浏览所有共享相同名称的组

我该怎么做?
`您可以使用
groupby
对象中获取组。groups
这将返回一个dict,键是组值,然后您可以使用
set
intersection
查找公共列,然后使用
获取公共组。get\u group

In [252]:    
df = pd.DataFrame({'id':['a','b','c','b','c'], 'data':np.random.randn(5)})
df1 = pd.DataFrame({'id':['a','a','a','b','d'], 'data':np.random.randn(5)})
gp1 = df.groupby('id')
gp2 = df1.groupby('id')
print(gp1.groups)
print(gp2.groups)

{'b': [1, 3], 'a': [0], 'c': [2, 4]}
{'b': [3], 'a': [0, 1, 2], 'd': [4]}

In [ ]:    
common = set(gp1.groups.keys()).intersection(set(gp2.groups.keys()))
common

In [270]:
for gp in common:
    print('first:\n')
    print(gp1.get_group(gp).head())
    print('\nsecond: \n')
    print(gp2.get_group(gp).head())

first:

       data id
1 -0.252577  b
3  0.274945  b

second: 

       data id
3  1.521554  b
first:

       data id
0  0.142474  a

second: 

       data id
0  1.536180  a
1 -1.117422  a
2  1.490307  a

.groups
将返回
groupby
对象的组,然后您可以找到这些对象的交集,然后获取调用
的特定组。get\u group