Python 删除dataframe中不符合条件的行

Python 删除dataframe中不符合条件的行,python,pandas,Python,Pandas,我有一个熊猫数据框,需要清理Status列。我的数据如下所示: id Status 123 100% 124 0% 125 1% 126 100% 127 0.25% id Status 123 100% 124 0% 126 100% 我想排除所有不是100%或0%的行。列的类型为object 我希望我的数据如下所示: id Status 123

我有一个熊猫数据框,需要清理
Status
列。我的数据如下所示:

id        Status
123       100%
124       0%
125       1%
126       100%
127       0.25%
id        Status
123       100%
124       0%
126       100%
我想排除所有不是100%或0%的行。列的类型为
object

我希望我的数据如下所示:

id        Status
123       100%
124       0%
125       1%
126       100%
127       0.25%
id        Status
123       100%
124       0%
126       100%
我尝试了以下方法:

df = df.drop(df[(df.Status == '100%') & (df.Status == '0%')].index)
但这实际上根本不会改变数据集


谢谢大家!

您可以有条件地选择符合条件的行,并将其设置为新的数据帧值

df = df.loc[(df['Status']  == '100%') | (df['Status']  == '0%')]
编辑:“|”而不是“&”,因为两者不能同时为真,因此返回0结果。

首先,您说“或”,所以您需要管道操作符,而不是符号(即使编码正确,“状态”也永远不会同时为0%和100%)。其次,您可以根据条件正确地调用索引,但需要将索引作为索引传递给
drop
。这应该起作用:

df = pd.DataFrame([['100%'], ['0%'], ['1%'],['100%'],['0.25%']], columns=['Status'], index=[123, 124,125,126,127])
df = df[(df.Status == '100%') | (df.Status == '0%')]
df.drop(index=df[(df.Status=="100%" )| (df.Status=="0%")].index)

df=df[~df.Status.isin(['100%,'0%])]
?语法错误:在扫描字符串文字时下线请在
0%
之后添加一个
'
。哦,糟了!!!非常感谢。这不知怎的给了我0个结果。因为值不能同时为100%和0%,所以如果我们使用
,这行代码可以工作。就像下面的答案中提到的。