ValueError: Unable to coerce list of <class 'pandas.core.series.Series'> to Series/DataFrame

ValueError: Unable to coerce list of <class 'pandas.core.series.Series'> to Series/DataFrame

我正在使用 biopandas 中的 distance_df 函数来计算一堆原子形成参考点的距离。该函数工作正常,但我在代码的一部分中收到此值错误。基本上,我将 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)

错误快照:

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

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

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

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

谢谢