【问题标题】:looping through files and data error message pandas python循环文件和数据错误消息pandas python
【发布时间】: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:使用序列设置数组元素

这里使用的正确语法是什么?

【问题讨论】:

    标签: python loops pandas


    【解决方案1】:

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

    【讨论】:

    • 这次错误给出:return array(a, dtype, copy=False, order=order) ValueError: setting an array element with a sequence
    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    相关资源
    最近更新 更多