我有两个 DataFrame,我使用它们按月份将其分组:
grouped1 = data1[key].set_index('Time').groupby(pd.TimeGrouper(freq='M'))
grouped2 = data2[key].set_index('Time').groupby(pd.TimeGrouper(freq='M'))
grouped2
可能比 grouped1
拥有更多的组,反之亦然。我想对分组的 DataFrame 之间共享相同名称的组运行统计信息。
例如,如果 grouped1
有一个名为 April
的群组,grouped2
有一个名为 April
的群组,我想对这些组进行统计。我想循环浏览所有具有相同名称的组。
我该怎么做? `
最佳答案
您可以使用 .groups
从 groupby
对象获取组,这会返回一个字典,键是组值,然后您可以使用 set
和 intersection
,然后使用 .get_group
获取公共(public)组:
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
关于python - 在 Pandas 中查找同名组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550516/