根据列熊猫中的值创建一个列表,但有例外

时间:2020-05-16 17:59:17

标签: python pandas

仅当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,因为它是与SP5SP6匹配的唯一序列。

预期结果将是:

List_lonely_sequences = ['SEQA','SEQL']

2 个答案:

答案 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))