【发布时间】:2019-04-27 16:22:04
【问题描述】:
我有一个带有邮政编码的 DataFrame,除此之外。作为示例,数据如下所示:
Zip Item1 Item2 Item3
78264.0 pan elephant blue
73909.0 steamer panda yellow
2602.0 pot rhino orange
59661.0 fork zebra green
861893.0 sink ocelot red
77892.0 spatula doggie brown
其中一些邮政编码无效,数字太多或太少。我正在尝试删除那些具有无效字符/数字数的行(在这种情况下为七个字符,因为我正在根据str() 检查长度并且其中包含.0)。以下lengths 循环:
zips = mydata.iloc[:,0].astype(str)
lengths = []
for i in zips:
lengths.append(len(i))
为每行生成一个邮政编码字符长度的系列(不要与系列混淆,尽管它可能是——我是 Python 新手)。然后,我尝试根据来自 lengths 变量的信息对 DataFrame 进行子集化。我尝试了几种不同的方法;以下是最新版本:
for i in lengths.index(i):
if mydata.iloc[i:,0] != 7:
mydata.iloc[i:,0].drop()
当然,这会失败,出现ValueError: '44114.0' is not in list 错误。任何人都可以就如何做我想要完成的事情提供一些建议吗?
【问题讨论】:
-
如果邮政编码存储为浮点数,包含的数字太少可能是因为它们以 0 开头(这对邮政编码有效),但那些前导 0 会被浮点数丢弃
-
你可以发布你的数据的sn-p吗
-
正确。这是我在分析中考虑的一部分。这就是我接收数据的方式,也是我现在需要修复它的部分原因。数据已损坏,但它就是它的本来面目。
标签: python-3.x pandas dataframe subset