【发布时间】:2020-01-04 19:20:52
【问题描述】:
我想删除 9 行具有重复 ID 的行,为它们获取索引然后尝试删除,但删除后的长度显示 714 行已被删除。熊猫索引不是唯一的吗?我怎样才能正确地做到这一点
我搜索了 pandas 数据框并确定了我想要删除的行。写下 ID,然后尝试删除,但似乎出了点问题。 我怀疑熊猫索引不是唯一的,并且删除了超出预期的行。 如何创建唯一索引或如何正确使用索引?
len(CrimeClean) #result 690130
CrimeCleanV1 = CrimeClean.drop([5650, 3725, 6373, 2469, 7751, 7058, 3859, 3640, 3141])
#Validation, row 7751 should not appear
CrimeCleanV1[CrimeCleanV1.Crime_ID == "56882eb6d444d5677ac90c06a0582fe70fe1fd932fd5bd902a5aa4a2aa363bf3"]
#Only one row instead of two appeared as intended
len(CrimeCleanV1) #result 689416
【问题讨论】:
-
您是否已经考虑过使用
drop_duplicates?是索引中的 5650 个标签,还是行号? -
我试图删除的行只有重复的 ID,但它们并不完全相同,所以 drop_duplicates 不会删除它们。 5650 和我从最左侧第一张图片中搜索得到的其余数字(仍然不确定它们是否是索引)@jottbe
-
在这种情况下,它们是索引标签。它应该工作。可能只是,您的索引由于某种原因不是唯一的(例如,在连接两个数据帧之后)。如果你这样做
CrimeClean.loc[[5650...会发生什么?您获得的行数是否与您拥有的 id 一样多? -
我尝试了 CrimeClean.loc[5650],它给了我 89 个不同的行!它也可能有用,但数据框最初是一次导入 103 个不同的 csv 文件
-
我运行了 CrimeClean = CrimeClean.reset_index(drop=True) 并重新搜索 编辑了索引然后删除了它,它运行良好。谢谢
标签: pandas pyspark jupyter-notebook