我正在尝试编写一个脚本来解析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)。
无法读取列,只有列名称属性作为输出值。
你能告诉我我的方法出错吗?
答案 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