You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ZINC数据库的smi文件转为DataFrame?现有代码显示异常

解决SMI文件转Pandas DataFrame的显示问题

问题根源

你用readlines()读取文件时,会保留每行末尾的换行符\n,导致DataFrame里的SMILES字符串携带多余换行标记,进而引发显示异常。另外,不少SMI文件是SMILES字符串+化合物ID的两列格式,直接按单列表格处理也会出错。

修正方案

方案1:处理单列SMI文件(仅含SMILES字符串)

如果你的SMI文件每行只有一个SMILES字符串,修改代码去除换行符即可:

import pandas as pd

smiles_file_path = "你的文件路径.smi"
# 读取文件并清除每行末尾的换行符
with open(smiles_file_path, 'r') as f:
    smiles_list = [line.strip() for line in f.readlines()]

# 生成DataFrame
df = pd.DataFrame({'SMILES': smiles_list})
# 显示前5行验证结果
print(df.head())

方案2:读取带ID的SMI文件(常见格式)

如果你的SMI文件是SMILES 化合物ID的两列结构,直接用Pandas的read_csv更高效:

import pandas as pd

smiles_file_path = "你的文件路径.smi"
# 指定空格为分隔符,自定义列名
df = pd.read_csv(smiles_file_path, sep=' ', names=['SMILES', 'Compound_ID'])
# 输出完整数据
print(df)

额外排查建议

  • 若文件存在空行,可添加过滤逻辑:smiles_list = [line.strip() for line in f if line.strip()]
  • 若出现编码错误,读取时指定编码:open(smiles_file_path, 'r', encoding='utf-8')

内容的提问来源于stack exchange,提问作者metonia mari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:44:51