pandas 尝试基于值删除行[重复]

mdfafbf1  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(68)

此问题已在此处有答案

How do I select rows from a DataFrame based on column values?(17回答)
10天前关闭。
我正在尝试删除基于pandas数据框中的值“WITHDRAWN”的行。它位于一个名为“法官”的栏目下。我的意图是在“Judge”列中删除值为“WITHDRAWN”的行。
这是我最近使用的代码

adversary_df = adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'], axis = 0, inplace = True)

字符串
这是我收到的错误(这些是我的 Dataframe 的3列)KeyError: "['Client No.', 'Defendant/Municipality', 'Judge'] not found in axis"
这是我根据对pd.drop()文档的理解尝试的另一个方法。

adversary_df = adversary_df.loc([:,'WITHDRAWN'], axis = 0)


这一个只是产生一个奇怪的,无法描述的错误
KeyError: 'WITHDRAWN'
我是一个相对新手在艺术的编程,所以如果有人可以借给一些见解的主要问题,这将是非常赞赏。此外,如果有人知道什么是不可描述的错误,那么这也将是有帮助的!

adversary_df = adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'], axis = 0, inplace = True)


应该在“Judge”列下删除值为“WITHDRAWN”的两行。

cotxawn7

cotxawn71#

一种更简单的方法,使用布尔索引:

adversary_df = adversary_df[adversary_df['Judge'] != 'WITHDRAWN']

字符串
或者,如果您仍然想使用drop,那么您应该传递索引(而不是像在初始代码中那样传递df值)。这样:

adversary_df = adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'].index)


请注意,您还应该删除inplace = True,因为无论如何您都将结果df返回到adversary_df(或显式设置inplace = False)。

相关问题