微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:无法将 <class 'pandas.core.series.Series'> 列表强制转换为 Series/DataFrame

如何解决ValueError:无法将 <class 'pandas.core.series.Series'> 列表强制转换为 Series/DataFrame

我正在使用 biopandas 中的 distance_df 函数来计算一堆原子形成参考点的距离。该函数工作正常,但我在我的代码的一部分中收到此 Value 错误。基本上,我将 CLR 分为 4 部分,以检查每个部分与相互作用氨基酸的距离。一切正常,但代码卡在最后一行,它在一个月前工作,biopandas有任何更新吗?这更多的是生物学,所以如果有人对代码有任何疑问,我很乐意清除它们。我从来没有遇到过这个错误,也不知道该怎么做。提前谢谢你:)

split_clr = []
path = "/media/New Volume/2RH1.pdb"
ppdb = PandasPdb().read_pdb(path)
atom_df = ppdb.df['ATOM']
hetatm = ppdb.df['HETATM'][(ppdb.df['HETATM']['residue_name']=="CLR")]
chains = np.unique(hetatm.chain_id)
residues = np.unique(hetatm.residue_number)
for chain in chains:    
    for res in range(len(residues)):
        data = hetatm[(hetatm['residue_number']==residues[res])&(hetatm['chain_id']==chain)]
        if len(data) !=0:
            split_clr.append(data)
for nu in range(len(split_clr)):
    upper = []
    middle1 = []
    middle2 = []
    lower = []
        
    # upper part of CLR
    clr_o = split_clr[nu][split_clr[nu]['atom_name']=='O1']
    x_o = clr_o.x_coord
    y_o = clr_o.y_coord
    z_o = clr_o.z_coord
    reference_point=x_o,y_o,z_o
    dista = ppdb.distance_df(atom_df,xyz=reference_point)

错误快照:

Error snapshot

解决方法

谢谢大家。我已经解决了这个问题。如果有人遇到类似的错误,这里是解决方案: 就我而言,错误是因为这三个变量:

x_o = clr_o.x_coord
y_o = clr_o.y_coord
z_o = clr_o.z_coord

正在返回一个熊猫系列,其中包括索引号和值。现在,当我调用 biopandas 的 distance_df 函数时,它将 xyz 坐标作为列表,但我传递的是一个熊猫系列。我在我的案例中发现的最简单的方法是添加只提供单个输出的 float,如下所示:

x_o = float(clr_o.x_coord)
y_o = float(clr_o.y_coord)
z_o = float(clr_o.z_coord)

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。