我需要删除在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的行。
答案 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]