为什么熊猫df.drop()不会删除所有索引,除非就地使用

时间:2020-05-14 16:39:58

标签: pandas python-3.6

我开始用其他形式写这个问题,但与此同时找到了解决方案。我有一个形状为55k x 4的数据框。由于几个小时了,我不明白为什么我不能删除需要删除的行。我有这样的东西:

print(df.shape)
indexes_to_drop = list()

for row in df.itertuples(index=True):
    if some_complex_function(row[1]):
        indexes_to_drop.append(row[0])

print(len(indexes_to_drop))
df = df.drop(index=indexes_to_drop)
print(df.shape)

我的输出就像:

55000 x 4
2500
52500 x 4

但是,一旦显示了df中的某些行,我仍然能够找到我认为已删除的行。官方第一个想法是检查some_complex_function。但是我记录了它所做的一切,一切都很好。

因此,我尝试了几种其他使用索引删除行的方法,例如:

df = df.drop(df.index[ignore_indexes]) 不过,形状还可以,但行不是。

然后我尝试使用iterrows()而不是itertuples。一样。

我认为索引编制可能有问题。您知道:索引号与索引标签。我在小型数据框上测试了我的代码,一切都像个魅力。

然后我意识到,在上面运行代码之前,我会用df做一些事情。所以我像这样重置索引: df.reset_index(inplace=True, drop=True)索引已更改,从0开始计数,但我的结果仍然错误。

然后我尝试了此操作:df.drop(index=indexes_to_drop, inplace=True) BOOM奏效了。

目前,我没有寻找解决方案,因为我显然找到了解决方案。我想知道为什么不“就地”删除行是行不通的。我不明白。

干杯!

0 个答案:

没有答案
相关问题