首页 > 解决方案 > Pandas Dataframe 访问多索引数据帧的最快方法

问题描述

我有一个包含数百万条多索引记录的数据框

df = pd.DataFrame(data=data, columns=['AminoAcid', 'AASeqID', 'Atom', 'X', 'Y', 'Z'])
return df.drop_duplicates(['AASeqID', 'Atom'], keep='last').set_index(['AASeqID', 'Atom'], drop=True)

数据样本看起来像这样

在此处输入图像描述

为了访问特定 AASeqID 的氨基酸,我曾经使用 .at 访问它,

  display(AtomsDF.at[(1,),'AminoAcid'][0])

其中 1 是提供任何原子的 AASeqID,它返回 MSE。最近熊猫更新后的问题不再接受这个。

我可以使用 .loc,但它会显着影响从几分钟到几小时的速度

display(AtomsDF.loc[(1,),'AminoAcid'][0])

我不能使用 df.iat(),因为该索引与 AASeqID 不同,因为 AASeqID 与蛋白质数据库中特定蛋白质的氨基酸索引相匹配。

我可以通过仅访问 AASeqID 来获取氨基酸的最快方法是什么,或者我可以始终获得特定 AASeqID 的第一行吗

标签: pythonpandasdataframe

解决方案


推荐阅读