这是一个df:
COL1 COL2 COL3
seqA NA 10
seqA Unknown 5
seqA Cow 50
seqB NA 2
seqC NA 2
seqC Unknown 2
seqC Bird 6
seqC Cow 1
seqD Unknown 30
seqD Shark 2
因此,我们的想法是删除重复的COL1值,并仅保留COL3
最低的一个,而如果没有其他{{1 }}
例如NA
我保留
Unknown
因为这是> 10:
COL3 value < 10
但在 seqC我保持:
SeqA
因为它是seqA Unknown 5
在示例中,预期输出为:
seqA Cow 50
所以一个主意是先做一个
seqC Cow 1
但是我不知道如何合并优先级,因为除Unknwown或NA以外的所有事物都是优先级,除了它的COL3> 10
答案 0 :(得分:2)
让我们先过滤然后sort_values
+ drop_duplicates
out = df[df.COL3.lt(10) | df.COL2.eq('Unknown')].sort_values('COL3').drop_duplicates('COL1').sort_index()
Out[47]:
COL1 COL2 COL3
1 seqA Unknown 5
3 seqB NaN 2
7 seqC Cow 1
9 seqD Shark 2