仅当COL2
值是唯一的(只有一个与COL1
值匹配的值)时,我才想添加到列表值COL1
中。
List_lonely_sequences=[]
这是数据框
COL1 COL2
SP1 SEQA
SP1 SEQB
SP1 SEQC
SP2 SEQC
SP2 SEQD
SP3 SEQA
SP4 SEQB
SP4 SEQD
SP5 SEQL
SP6 SEQL
我的列表(List_lonely_sequences
)应该包含SEQA
,因为它是与SP3
匹配的唯一序列。
我的列表还应该包括SEQL
,因为它是与SP5
和SP6
匹配的唯一序列。
预期结果将是:
List_lonely_sequences = ['SEQA','SEQL']
答案 0 :(得分:3)
这应该有效:
unique_vals = df.drop_duplicates(['COL1'], keep=False)['COL2'].unique()
答案 1 :(得分:0)
首先,您需要按第一列分组,并汇总为列表
grouped = df.groupby('COL1').agg(lambda x: list(x))
然后,您需要查找仅包含1个元素的列表,然后提取值。 然后,我们将其转换为集合以删除重复项,然后返回列表。
list(set(grouped[grouped.COL2.apply(len) == 1].COL2.apply(lambda x: x[0]).values))