删除重复的熊猫值

时间:2018-12-12 11:15:13

标签: pandas duplicates

我有一个这样的数据框

id   col1 

2   T 

2   T 

4   R

4   T

6   G

6   G

我想用这种方式进行重复数据删除:

如果我的T和T具有相同的ID,我想保留2行

如果我的G或R和G或R具有相同的ID,我想保留2行

如果我在同一IT上有T和(G或R),我只想保持T行(删除两行之一)

我想要这个结果:)

id   col1 

2   T 

2   T 

4   T

6   G

6   G

谢谢:)

1 个答案:

答案 0 :(得分:0)

使用boolean indexing进行过滤:

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

说明

col1的{​​{1}}与eqT)比较:

==

m1 = df['col1'].eq('T') print (m1) 0 True 1 True 2 False 3 True 4 False 5 False Name: col1, dtype: bool transform每组计算True个值:

sum

比较不等于neprint (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 链接在一起以进行按位OR:

|