在python中删除Dataframe中包含不需要的值的行

时间:2017-11-12 21:21:30

标签: python pandas

我需要删除在Python中使用panda创建的数据框中的行。我已尝试过在不同论坛中提到的所有不同方式,但似乎没有任何效果。

我想删除ZipCodes长度超过5位的行,所以我看到了这个答案:

df = df[len(df.CoulmnName) <5]
df.head

我得到错误:&#34; KeyError:False&#34; 我想迭代数据帧以删除不同列中值大于1的行。这就是我试过的:

for x in cleandata4bestdeal.columns:
if x[line] > 1:
   df.drop(df[line])

并且它不起作用。我想迭代列标题以删除值不是1或0的行。

2 个答案:

答案 0 :(得分:1)

使用.str.len()

df[df.zip.astype(str).str.len()<5]
Out[336]: 
    zip
0  1111
2  1111
3  2222
4  3333

数据输入

df=pd.DataFrame({'zip':[1111,111111,1111,2222,3333]})

答案 1 :(得分:1)

len(df.ZipCode)将为您提供列长度,而不是每行的长度。如果你想要后者,你需要对它进行str.len操作 -

mask = df.ZipCode.astype(str).str.len() <= 5  # retain zipCodes with 5 or less digits

现在,使用面具,您可以过滤掉您不想保留的行:

df = df.loc[mask]  # df = df[mask]