【发布时间】:2016-01-08 12:27:25
【问题描述】:
我有一个包含多个列的数据框,如下所示...
Chr1 Cufflinks exon 28354206 28354551 . . . gene_id "XLOC_008369"; transcript_id "TCONS_00014347"; exon_number "1"; oId "CUFF.2405.1"; class_code "u"; tss_id "TSS10073";
Chr1 Cufflinks exon 28785549 28786194 . . . gene_id "XLOC_008370"; transcript_id "TCONS_00014348"; exon_number "1"; oId "CUFF.2441.1"; class_code "u"; tss_id "TSS10074";
Chr1 Cufflinks exon 29328712 29329210 . . . gene_id "XLOC_008371"; transcript_id "TCONS_00014349"; exon_number "1"; oId "CUFF.2495.1"; class_code "u"; tss_id "TSS10075";
Chr1 Cufflinks exon 29427951 29428406 . . . gene_id "XLOC_008372"; transcript_id "TCONS_00014350"; exon_number "1"; oId "CUFF.2506.1"; class_code "u"; tss_id "TSS10076";
Chr1 Cufflinks exon 29460116 29460585 . . . gene_id "XLOC_008373"; transcript_id "TCONS_00014351"; exon_number "1"; oId "CUFF.2509.1"; class_code "u"; tss_id "TSS10077";
我想要做的是,如果我列表中的任何项目出现在数据框的一列中,那么我将第二列从 Cufflinks 替换为 lincRNA。
一个问题是我用来制作字典中的键的列在数据框中有多行,因此我只得到唯一键,因此输出的总行数与输入。
到目前为止,这是我的代码...
#!/usr/bin/env python
file_in = open("lincRNA_final_transcripts.fa")
file_in2 = open("AthalianaslutteandluiN30merged.gtf")
file_out = open("updated.gtf", 'w')
sites = []
result = {}
for line in file_in:
line = line.strip()
if line.startswith(">"):
line = line[1:]
gene = str.split(line, ".")
gene = gene[0]
sites.append(gene)
for line2 in file_in2:
line2 = line2.strip().split()
line3 = str.split(line2[11], ";")
line3 = line3[0]
line3 = line3[1:-1]
result[line3] = line2
for id in sites:
id2 = str(id)
if id2 in result.keys():
result[id][1] = "lincRNA"
for val in result.values():
file_out.write("\t".join(val))
file_out.write("\n")
【问题讨论】:
-
你能解释一下什么是df吗?
-
除非首字母缩略词被广泛使用(即至少应该在维基百科的消歧页面en.wikipedia.org/wiki/DF 上列出),否则对于那些可能能够回答您的问题的人来说,它基本上毫无意义。
-
对不起,它是一个数据框或多列文本文件
-
我现在已经编辑了我的问题
-
你为什么要重新发明轮子?在 Python 中有非常完善的数据/数据帧操作库,例如
pandas。