如何识别重复项并分配新的ID?

问题描述 投票:0回答:4

我有一份要订购的DNA寡核苷酸列表,这些寡核苷酸具有重复序列。但是,我需要将它们与标识符搭配使用,以用于它们的质粒。

换句话说,我需要这个数据框:

  Oligo_sequence   Plasmid
0 "ATG"           "Plasmid A"
1 "ATG"           "Plasmid B" 
2 "CAG"           "Plasmid C" 

成为:

  Oligo_sequence    Plasmid
0 "ATG"           ["Plasmid A","Plasmid B"]
1 "CAG"           ["Plasmid C"] 

我认为类似的功能可能会起作用。但是我不知道如何识别重复项。

for index, row in df.iterrows():
    plasmidlist = [row[1]]
    if duplicate == True: #Is their a dublicate function I can use? 
        plasmidlist.append(duplicaterow[1])
        drop(dublicaterow)

    df.at[row,'Plasmid']= plasmidlist
python pandas biopython
4个回答
0
投票

您可以将pd.groupbypd.groupby一起使用:

.apply(list)

打印:

df = pd.DataFrame({'Oligo_sequence':['ATG', 'ATG', 'CAG'], 'Plasmid':['Plasmid A', 'Plasmid B', 'Plasmid C']})

print(df.groupby('Oligo_sequence')['Plasmid'].apply(list).reset_index())

0
投票

如果您的解析算法有效,我将使用字典结构来完成此任务。您可以使用Python轻松检查列表中是否存在项目:

  Oligo_sequence                 Plasmid
0            ATG  [Plasmid A, Plasmid B]
1            CAG             [Plasmid C]

0
投票

如果您不太喜欢列表,可以在Pandas中使用字符串函数: for each item in parent_list: if item is in plasmid_list: # do thing

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.cat.html

0
投票

Oligo_sequence=['ATG','ATG','CAG'] Plasmid = ['Plasmid A','Plasmid B', 'Plasmid C'] data = {'Oligo_sequence':Oligo_sequence, 'Plasmid':Plasmid} df = pd.DataFrame(data) df Oligo_sequence Plasmid 0 ATG Plasmid A 1 ATG Plasmid B 2 CAG Plasmid C (df .groupby('Oligo_sequence') .agg(lambda x: x['Plasmid'].str.cat(sep= ',')) .reset_index() ) Oligo_sequence Plasmid 0 ATG Plasmid A,Plasmid B 1 CAG Plasmid C groupby与列表一起使用:

agg

输出:

df.groupby('Oligo_sequence')['Plasmid'].agg(list)
© www.soinside.com 2019 - 2024. All rights reserved.