使用Biopython SeqIO解析FASTA存入DataFrame序列逗号分隔问题求解
问题原因
你存入DataFrame的序列本质是Biopython的Seq类对象,不是Python原生字符串。Seq对象本身是可迭代结构,pandas渲染时会将它拆分为单个字符的集合,就出现了逗号分隔的展示效果。
解决方法
提取序列时将Seq对象强制转换为原生字符串即可,修改后的代码如下:
seq_ids = [] seqs = [] seq_lengths = [] for record in sequences: seq_id = record.id # 把Seq对象转为纯字符串 sequence = str(record.seq) length = len(sequence) seq_ids.append(seq_id) seqs.append(sequence) seq_lengths.append(length)
后续创建DataFrame的逻辑无需改动,生成的Sequences列就是你需要的纯字符串格式序列。
优化建议(可选)
你可以省略预先存储所有SeqRecord的步骤,遍历SeqIO.parse返回的迭代器时直接处理数据,内存占用更低:
import pandas as pd from Bio import SeqIO data = [] for record in SeqIO.parse(file, "fasta"): data.append({ "Seq_id": record.id, "Sequences": str(record.seq), "Sequence_length": len(record.seq) }) df = pd.DataFrame(data)
内容的提问来源于stack exchange,提问作者Fuad Sarker Jeem
相关产品推荐
相关产品推荐

