Pandas 根据数据中的值删除重复的数据

Pandas 根据数据中的值删除重复的数据,pandas,duplicates,Pandas,Duplicates,我有一个这样的数据帧 id col1 2 T 2 T 4 R 4 T 6 G 6 G 我希望通过以下方式进行重复数据消除: 如果相同id有T和T,我想保留这两行 如果我有相同id的G或R和G或R,我想保留这两行 如果我有T和(G或R)作为同一行,我只想保留T(删除两行中的一行) 我想要这个结果:) 谢谢:)用于筛选: m1 = df['col1'].eq('T') m2 = m1.groupby(df['id']).transform('sum')

我有一个这样的数据帧

id   col1 

2   T 

2   T 

4   R

4   T

6   G

6   G
我希望通过以下方式进行重复数据消除:

如果相同id有T和T,我想保留这两行

如果我有相同id的G或R和G或R,我想保留这两行

如果我有T和(G或R)作为同一行,我只想保留T(删除两行中的一行)

我想要这个结果:)

谢谢:)

用于筛选:

m1 = df['col1'].eq('T')
m2 = m1.groupby(df['id']).transform('sum').ne(1)
df = df[m1 | m2 ]
print (df)
   id col1
0   2    T
1   2    T
3   4    T
4   6    G
5   6    G
说明

T
col1
与(
=
)进行比较:

使用
sum
计算各组的
True
值:

print (m1.groupby(df['id']).transform('sum'))
0    2.0
1    2.0
2    1.0
3    1.0
4    0.0
5    0.0
Name: col1, dtype: float64
比较不等于(
!=
):

并通过
|
按位或链接在一起:

print (m1 | m2)
0     True
1     True
2    False
3     True
4     True
5     True
Name: col1, dtype: bool

有G或R和G或R
-没有打字错误?每组总共有2个值?例如,您是否可以创建10-15行,其中包含多个组,其中一些值被删除,而一些值未被删除?
print (m1.groupby(df['id']).transform('sum'))
0    2.0
1    2.0
2    1.0
3    1.0
4    0.0
5    0.0
Name: col1, dtype: float64
m2 = m1.groupby(df['id']).transform('sum').ne(1)
print (m2)
0     True
1     True
2    False
3    False
4     True
5     True
Name: col1, dtype: bool
print (m1 | m2)
0     True
1     True
2    False
3     True
4     True
5     True
Name: col1, dtype: bool