首页 > 解决方案 > Python Pandas:按一列排序并删除重复项

问题描述

我有一个包含一些重复项的数据框,但我不能将它们全部删除。共有四列,一列是标题,另一列是有关分子的重要信息:

Title,docking score,glide rmsd,chiral flag
ligprep_2.maegz:1,-6.437,0.743,true
ligprep_2.maegz:1,-5.776,0.527,true
ligprep_2.maegz:2,-6.439,8.175,false
ligprep_2.maegz:2,-5.274,4.867,false
ligprep_2.maegz:3,-5.912,8.936,true
ligprep_2.maegz:3,-5.516,8.921,true
ligprep_2.maegz:4,-5.148,0.464,true
ligprep_2.maegz:4,-5.005,1.163,true
ligprep_2.maegz:5,-5.148,0.464,true
ligprep_2.maegz:5,-5.005,1.163,true
ligprep_2.maegz:6,-5.592,6.263,false
ligprep_2.maegz:6,-4.022,0.729,false
ligprep_2.maegz:7,-5.911,9.566,true
ligprep_2.maegz:7,-5.636,8.793,true

重要的是要注意我在这些数据框中有 787 行,但只有 477 个分子。例如,第一行和第二行的 ligprep_2.maegz:1 是相同的,但它们具有不同的配置和不同的 glide rmsd。

我想通过从最大的滑行 rmsd 对我的行进行排序,然后删除重复的行。我怀疑会有最小滑行有效值的行。

我使用了这段代码:

TEST = data.sort_values(by="glide rmsd",ascending=False).drop_duplicates(subset=['Title'], keep='first')

那行得通,但我得到了一个奇怪的结果。然后我用命令检查了我的数据,TEST.describe()我看到了这个:

docking score   glide rmsd
count   469.000000  469.000000

有 469 行,但必须有 477 个分子(行)。

我做错了什么?

UPD:分子丢失不是因为代码!

标签: pythonpandassorting

解决方案


推荐阅读