Pandas Drop功能在循环中不起作用



全部!我对此感到非常困惑,因为我的一生无法弄清楚这个错误。我正在尝试浏览数据框架中的所有字符串,并删除不包含" Barry Bonds"字符串的字符串。

到目前为止,我已经设法通过其索引排出行:

bb_db.drop(bb_db.index[1])

这成功地将行放在该索引上,但是当我将其扔进此循环时:

for i in range(len(bb_db)):
    if 'Barry Bonds' in bb_db['player_names'][i]:
        bb_db.drop(bb_db.index[i])
        print (i)

我获得了整个数据框

谢谢!

drop除非您要求使用inplace=True,否则不会突变您当前的数据帧。

话虽这么说,几乎可以肯定不是这里最简单的方法。为什么不只是与str访问者的布尔索引,即用str.contains 进行索引。
bb_db[~bb_db.player_names.str.contains('Barry Bonds')]

这应该有效

for i in range(len(bb_db)):
    if 'Barry Bonds' in bb_db['player_names'][i]:
        bb_db = bb_db.drop(bb_db.index[i])
        # or this works too..
        # bb_db.drop(bb_db.index[i], inplace=True)
        print (i)

最新更新