我有一个熊猫数据框,需要清理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)
但这实际上根本不会更改数据集。
谢谢!
答案 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%')]