繁体   English   中英

Python熊猫问题与.drop和非唯一索引

[英]Python pandas issues with .drop and a non-unique index

我有一个熊猫DataFrame,说df ,我试图通过索引删除某些行。 特别:

myindex = df[df.column2 != myvalue].index
df.drop(myindex, inplace = True)

对于大多数DataFrame来说,这似乎很好用,但是对于一个DataFrame来说,我得到一个非唯一的索引myindex似乎会发生奇怪的事情(我不确定为什么,因为DataFrame没有重复的行)。 更准确地说,删除的值比索引中的值多得多(在极端情况下,即使column2具有myvalue几百行,我实际上也会删除所有行)。 仅提取唯一值( myindex.unique()并使用唯一索引删除行也无济于事。)

df = df[df.column2 != myvalue]

就像我想要的那样工作。 但是,我宁愿使用就地放置,但更重要的是,我想了解为什么直接赋值和使用索引的放置方法的结果不一样。

不幸的是,我无法提供这些数据,因为它们无法发布,并且由于我不确定到底出了什么问题,因此也无法模拟它们。 但是,我怀疑它可能与myindex不唯一有关(这也使我感到困惑,因为df中没有重复的行,但很可能是我误解了索引的创建方式)。

如果索引中包含重复的值,那么在执行reset_index可能会有所帮助。 这会将您的当前索引设置为列,并添加一个新的顺序索引(具有唯一值)。

df = df.reset_index()

两种方法不相同的原因是,在一种情况下,您传递了一系列布尔值,这些布尔值表示要保留的行和要删除的行(此处的索引值无关)。 对于下降的情况,您要传递一个索引值列表(映射到多个位置)。

最后,要检查索引是否重复,则不应检查重复的行。 简单地说:

df.index.has_duplicates

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM