关于python:Blast解析:AttributeError:’float’对象没有属性’split’

Blast parsing: AttributeError: 'float' object has no attribute 'split'

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

例如LT697097.1

结尾有一个小数。当我尝试拆分它并获取gi编号时,我会得到这个错误。

django attributeError"float"对象没有属性"split",它告诉我此错误是因为split假定它是一个float值。

所以,我使用了pandas的建议,将csv作为字符串类型导入pandas列作为字符串。

我正在使用列号,因为报表不会自动具有列名称。

1
2
3
4
5
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'。

然后,我尝试了AsType(str),正如在pandas中将列转换为字符串所建议的那样。

这将无法读取列,并且只将columns name属性作为输出值。

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


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

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

样品:

1
2
3
4
5
6
7
8
9
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