我有一份要订购的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
您可以将pd.groupby
与pd.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())
如果您的解析算法有效,我将使用字典结构来完成此任务。您可以使用Python轻松检查列表中是否存在项目:
Oligo_sequence Plasmid
0 ATG [Plasmid A, Plasmid B]
1 CAG [Plasmid C]
如果您不太喜欢列表,可以在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
将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)