在不符合条件的熊猫数据框中删除行

时间:2020-03-03 20:03:04

标签: python pandas

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

id        Status
123       100%
124       0%
125       1%
126       100%
127       0.25%

我要排除所有不是100%或0%的行。列的类型为object

我希望我的数据看起来像这样:

id        Status
123       100%
124       0%
126       100%

我尝试了以下方法:

df = df.drop(df[(df.Status == '100%') & (df.Status == '0%')].index)

但这实际上根本不会更改数据集。

谢谢!

3 个答案:

答案 0 :(得分:2)

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

df = df.loc[(df['Status']  == '100%') | (df['Status']  == '0%')]

编辑:“ |”而不是“&”,因为两者不能同时为真,因此返回0结果。

答案 1 :(得分:1)

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

df.drop(index=df[(df.Status=="100%" )| (df.Status=="0%")].index)

答案 2 :(得分:0)

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%')]