首页 > 解决方案 > 具有多个分组的熊猫 groupby

问题描述

我正在尝试使用 OR 条件对 2 列进行分组以创建一个组分类计数,如果在 groupid1 或 groupid2 中重复一个数字,它将创建一个第三个唯一的分组编号。

输入df

ID      GROUPID1    GROUPID2    
F632    173         1315    
F632    173         1315    
F966    173         1519    
F966    134         1519    
F173    704         1437    
F455    704         1201    
F456    702         1202    
F457    800         1500    
F966    173         1519
F966    134         1519

期望的结果 - 其中 173/134 或 1315/1519 创建 groupid3 '1';704 = 2,并且 702 和 800 是唯一的。

ID      GROUP1  GROUP2  GROUP3
F632    173     1315    1
F632    173     1315    1
F966    173     1519    1
F966    134     1519    1
F173    704     1437    2
F455    704     1201    2
F456    702     1202    3
F457    800     1500    4
F966    173     1519    1
F966    134     1519    1

标签: pythonpython-3.xpandasdataframe

解决方案


让我们尝试duplicated

s=(~(df.GROUPID1.duplicated()|df.GROUPID2.duplicated())).cumsum()
0    1
1    1
2    1
3    1
4    2
5    2
6    3
7    4
dtype: int64
df['GROUP3']=s

推荐阅读