利用pubchem的 bulk download下载smiles 遇到的会自动删除重复cid的问题发现与解决

今天再利用含cid的文件再pubchem网站获取smiles时发现,网站会自行删除重复cid而只输出一个smile
为解决这个问题想了如下办法.
1.直接将获取到的txt转为csv与原csv合并:

import pandas as pd
import sys
df = pd.read_csv(r'file')
df_old = pd.read_csv(r'file_old')
df_out = pd.merge(df,df_old)
df_out.to_csv(r'file_outcome') 

但是利用每个虽然能合并表格添加smile列,取同时会破坏原表结构,如
在这里插入图片描述

在这里插入图片描述
因为获取到的csv的CID列是只有数字的,因为merge的默认方式是inner 只有两表都存在的数据才会有单元格出现.
merge 函数内部存在两个参数:一个是确定merge的key列.如我们上述没写其实就是默认为以两表共同的colunm列为key列进行merge
另外一个参数是methon参数 表示merge的方法,有:inner ,outer(只要单个表中有出现的key单元格行就会出现再merge的合成表中),left(左连接),right(右连接).

还有一种方式,是以所获取得file为本,确立字典 (即cid与smiles之间的对应关系),在以此关系确立新的smile列

import pandas 
import sys
df = pd.read_csv(r'file')
df_old = pd.read_csv(r'file_old')
dic = dict(zip(df.PUBCHEMCID,df.SMLILES))
df_old['SMILES'] = df_old['PUBCHEM_CID'].map(lambda x:dic[x])
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值