首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用df.merge时出错:“您试图在对象列和int64列上合并”

尝试使用df.merge时出错:“您试图在对象列和int64列上合并”
EN

Stack Overflow用户
提问于 2022-06-04 15:24:06
回答 1查看 51关注 0票数 1

我目前正在编写一个程序,该程序接受化学化合物的标识符(称为CID号),然后使用pubchempy文档返回化合物的属性。

但是,当我试图将从pubchempy获得的数据值合并到初始数据库时,我仍然会得到一个错误。

这是我现在编写的代码:

代码语言:javascript
复制
import pandas as pd
import pubchempy
import numpy as np

df = pd.read_csv("Data.tsv.txt", sep="\t")

from pubchempy import get_properties

df['CID'] = df['CID'].astype(str).apply(lambda x: x.replace('.0',''))
df['CID'] = df['CID'].astype(str).apply(lambda x: x.replace('0',''))

df = df.drop(df[df.CID=='nan'].index)

df = df.drop(labels='reference', axis=1)
df = df.drop(labels='group', axis=1)
df = df.drop(labels='comments', axis=1)
df = df.drop(labels='compound_name', axis=1)

props = ['HBondDonorCount', 'RotatableBondCount', 'MolecularWeight', 'HBondAcceptorCount']
df2 = pd.DataFrame(get_properties(identifier=df.CID.to_list(), properties=props))

df = df.merge(df2)

print(df)

但是,我收到一条错误信息,上面写着,

代码语言:javascript
复制
ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat

有人知道怎么解决这个问题吗?

几行文本文件(数据文件):

代码语言:javascript
复制
NO. compound_name   IUPAC_name  SMILES  CID     Inchi   threshold   reference   group   comments
1   sulphasalazine  2-hydroxy-5-[[4-(pyridin-2-ylsulfamoyl)phenyl]diazenyl]benzoic acid O=C(O)c1cc(N=Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)ccc1O    5339    InChI=1S/C18H14N4O5S/c23-16-9-6-13(11-15(16)18(24)25)21-20-12-4-7-14(8-5-12)28(26,27)22-17-3-1-2-10-19-17/h1-11,23H,(H,19,22)(H,24,25)      R2|R2|R25|R46|  A   
2   moxalactam  7-[[2-carboxy-2-(4-hydroxyphenyl)acetyl]amino]-7-methoxy-3-[(1-methyltetrazol-5-yl)sulfanylmethyl]-8-oxo-5-oxa-1-azabicyclo[4.2.0]oct-2-ene-2-carboxylic acid   COC1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)COC21 3889    InChI=1S/C20H20N6O9S/c1-25-19(22-23-24-25)36-8-10-7-35-18-20(34-2,17(33)26(18)13(10)16(31)32)21-14(28)12(15(29)30)9-3-5-11(27)6-4-9/h3-6,12,18,27H,7-8H2,1-2H3,(H,21,28)(H,29,30)(H,31,32)      R25|    A   
3   clioquinol  5-chloro-7-iodoquinolin-8-ol    Oc1c(I)cc(Cl)c2cccnc12  2788    InChI=1S/C9H5ClINO/c10-6-4-7(11)9(13)8-5(6)2-1-3-12-8/h1-4,13H      R18|R26|R27|    A   

df2输出的几行代码:

代码语言:javascript
复制
        CID MolecularWeight  HBondDonorCount  HBondAcceptorCount  RotatableBondCount
0      5339           398.4                3                   9                   6
1      3889           520.5                4                  13                   9
2      2788          305.50                1                   2                   0
3   1422517           440.5                0                   8                   4
4  18595497           461.5                5                  10                   3
EN

回答 1

Stack Overflow用户

发布于 2022-06-04 15:31:07

您似乎希望合并CID列上的两个数据文件。CID列类型df2int,需要将其更改为对象以匹配df中的CID类型。

代码语言:javascript
复制
df = df.merge(df2.astype({'CID': str}), on='CID')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72500942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档