如何在不删除/删除其他重复行的情况下对 1 列中具有重复值的行和另一列中具有不同值的行进行分组?

时间:2021-03-10 09:13:44

标签: python pandas dataframe

我有一个大约有 12K+ 行和 16 列的数据框。有些行是重复的,这很好,但我想将那些在 1 列重复但在这一特定列不同的行分组。一个简单的例子,参考下面:

ID    Plate_Number          
A     SWD1314
A     SKT5721
B     SKT1419
B     SKT1419
C     MNJ1009
C     MNJ1009

现在,我想要的输出是获得 ID A 而不是 B 的客户。基本上,我想看到一个客户

我希望结果是这样的: DF 仅适用于客户 A

ID    Plate_Number          
A     SWD1314
A     SKT5721

DF 仅适用于客户 B 和 C :

ID    Plate_Number 
B     SKT1419
B     SKT1419
C     MNJ1009
C     MNJ1009

我尝试过使用 groupBy :

df.groupby(['ID'])

我也试过:

mask = df.duplicated(subset=['ID'], keep=False)
df[mask]

但他们都会在列表中给客户 B 和 C。我想获得具有不同车牌号的重复 ID。一定有一种我不知道的方法可以只获取客户 A,而不是 B 和 C。谢谢。

编辑:如果可能,我不想删除客户 B 和 C,因为它们仍然相关,只是客户 A 属于另一个组,而客户 B 和 C 属于另一个组。

编辑:增加了 1 个预期结果,即客户 B 和 C 的 DF。

1 个答案:

答案 0 :(得分:2)

带有 drop_duplicates 的替代方案:

df.drop_duplicates(subset=['ID', 'Plate_Number'], keep=False)

输出:

  ID Plate_Number
0  A      SWD1314
1  A      SKT5721