循环遍历文件和数据错误消息pandas python

时间:2015-11-11 20:38:34

标签: python loops pandas

我有一个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'] [position] = seq

我调查了它并玩了代码并改为(如下面的评论所示)

data.loc[:,('full_H_Sequence',position)] = seq 

但这次我收到此错误消息: 返回数组(a,dtype,copy = False,order = order) ValueError:使用序列设置数组元素

这里使用的语法是什么?

1 个答案:

答案 0 :(得分:0)

that link的解释非常有帮助。看起来解决方案是使用data.loc[:,('VHseq', position)] = seq。问题似乎是第一个[]返回一个单独索引的数据框,您无法更新。