Blast解析:AttributeError:'float'对象没有属性'split'

时间:2017-10-03 11:54:02

标签: python string pandas

我正在尝试编写一个脚本来解析Ncbi BLAST报告。导致此错误的列是基因组GI编号。

E.g。 LT697097.1

最后有一个小数。当我尝试拆分它并获得GI编号时,我收到此错误。

Django AttributeError 'float' object has no attribute 'split'告诉我这个错误是因为split假定它是一个浮点值。

所以,我使用Pandas reading csv as string type的建议将pandas列导入为字符串。

我正在使用列号,因为报告不会自动拥有列名。

import pandas as pd    
df = pd.read_csv("out.txt", sep="\t", dtype=object, names = ['query id','subject ids','query acc.ver','subject acc.ver','% identity','alignment length', 'mismatches','gap opens','q.start','q.end','s.start','s.end','evalue','bit score'])

sacc = df['subject acc.ver']
sacc = [i.split('.',1)[0] for i in sacc]

我仍然得到错误AttributeError:'float'对象没有属性'split'。

然后按照Convert Columns to String in Pandas的建议尝试了astype(str)。

无法读取列,只有列名称属性作为输出值。

你能告诉我我的方法出错吗?

1 个答案:

答案 0 :(得分:0)

我认为你需要str.split选择与NaN一起工作的第一个列表非常好。另一个问题应该是没有.的某些值:

df['subject acc.ver'] = df['subject acc.ver'].str.split('.',1).str[0]

样品:

df = pd.DataFrame({'subject acc.ver':['LT697097.1',np.nan,None, 'LT6']})

df['subject acc.ver'] = df['subject acc.ver'].str.split('.',1).str[0]
print (df)
  subject acc.ver
0        LT697097
1             NaN
2            None
3             LT6