【发布时间】:2015-11-11 20:38:34
【问题描述】:
我有一个excel文件:
data = pd.read_excel('.../excel.xlsx')
VHseqName VHseq
nameA
nameB
nameC
nameD
nameE
nameF
....
我有一个 fasta 文件:
f=open(".../Fastafile.fasta", "r+")
>nameA
AAAGGGCCT
>nameC
GGTTAACC
>nameD
CCCTTAA
>nameF
GGGGGAATTCC
....
我想要的输出是:(对于来自 excel 和 fasta 的每个名称匹配,将下一行的序列放在同一行但对于列 'VHseq')
VHseqName VHseq
nameA AAAGGGCCT
nameB
nameC GGTTAACC
nameD CCCTTAA
nameE
nameF GGGGGAATTCC
....
我的代码:
for vh in data["VHseqName"]:
position = data.index.get_indexer_for((data[data['VHseqName'] == vh].index))
for line in f:
title = line[1:]
title = title.rstrip()
seq = f.readline()
if(title in vh):
data['VHseq'][position] = seq
break
我的代码有时可以工作,有时它没有给出完整的结果表,我每次都会收到这个错误:
试图在 DataFrame 中的切片副本上设置一个值 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 数据['full_H_Sequence'][位置] = seq
我查看了它并玩弄了代码并更改为(如下面的 cmets 建议)
data.loc[:,('full_H_Sequence',position)] = seq
但是这次我收到了这个错误信息: 返回数组(a, dtype, copy=False, order=order) ValueError:使用序列设置数组元素
这里使用的正确语法是什么?
【问题讨论】: