我想在 pandas 中解决一个奇怪的问题。假设我有一堆对象,它们有不同的分组方式。这是我们的数据框的样子:
df=pd.DataFrame([
{'obj': 'Ball', 'group1_id': None, 'group2_id': '7' },
{'obj': 'Balloon', 'group1_id': '92', 'group2_id': '7' },
{'obj': 'Person', 'group1_id': '14', 'group2_id': '11'},
{'obj': 'Bottle', 'group1_id': '3', 'group2_id': '7' },
{'obj': 'Thought', 'group1_id': '3', 'group2_id': None},
])
obj group1_id group2_id
Ball None 7
Balloon 92 7
Person 14 11
Bottle 3 7
Thought 3 None
我想根据任何组将事物分组在一起。这里注释一下:
obj group1_id group2_id # annotated
Ball None 7 # group2_id = 7
Balloon 92 7 # group1_id = 92 OR group2_id = 7
Person 14 11 # group1_id = 14 OR group2_id = 11
Bottle 3 7 # group1_id = 3 OR group2_id = 7
Thought 3 None # group1_id = 3
组合后,我们的输出应如下所示:
count objs composite_id
4 [Ball, Balloon, Bottle, Thought] g1=3,92|g2=7
1 [Person] g1=11|g2=14
请注意,我们可以获得的前三个对象group2_id=7,然后是第四个对象Thought,是因为它可以通过group1_id=3为其分配group_id=7id 来与另一个项目匹配。注意:对于这个问题,假设一个项目只会属于一个组合组(并且永远不会有可能属于两个组的情况)。
我怎样才能做到这一点pandas?
郎朗坤
红糖糍粑
相关分类