首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python清理csv文件中的数据

使用python清理csv文件中的数据
EN

Stack Overflow用户
提问于 2017-10-14 20:59:48
回答 1查看 1.1K关注 0票数 0

嗨,我正在处理一个有几列的csv文件。一个特殊的列是以下格式的address -

美国华盛顿州金县胡安尼塔东北115号10515号,邮编: 98033

我想拆分每个列基于(,),并创建新的相关列为每个像单位,街道,州,邮编等…

我可以根据(,)对它们进行拆分,现在每次拆分都有一列。

问题是这个数据不一致,拆分后得到的列总数是10列,但是数据的顺序不一样。一些记录如下所示-

美国华盛顿州金县西雅图西西雅图38号西南大道3008号,邮编: 98126

美国华盛顿州金县,东北130街23098号,三部曲,联合山-新奇山庄,邮编98053

美国华盛顿州金县,西雅图,华盛顿公园,Broadmoor,第32大道东32号消防局34号,邮编: 98112

基本上,并不是每条记录都包含这10种信息,而且顺序也不一定相同。

清理这类数据的最佳方法应该是什么?我想最终让数据根据它们所代表的内容放在相关的列中,比如如果城市列在城市列下,如果邮政编码移动到邮政编码列等等。

我使用的是Python 2.0。

希望得到一个好的解决方案。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-10-14 21:07:35

我将使用库usaddress将地址分解为其组成部分。

https://usaddress.readthedocs.io/en/latest/

代码语言:javascript
复制
>>> import usaddress
>>> usaddress.tag('Robie House, 5757 South Woodlawn Avenue, Chicago, IL 60637')
(OrderedDict([
   ('BuildingName', 'Robie House'),
   ('AddressNumber', '5757'),
   ('StreetNamePreDirectional', 'South'),
   ('StreetName', 'Woodlawn'),
   ('StreetNamePostType', 'Avenue'),
   ('PlaceName', 'Chicago'),
   ('StateName', 'IL'),
   ('ZipCode', '60637')]),
'Street Address')

>>> usaddress.tag('State & Lake, Chicago')
(OrderedDict([
   ('StreetName', 'State'),
   ('IntersectionSeparator', '&'),
   ('SecondStreetName', 'Lake'),
   ('PlaceName', 'Chicago')]),
'Intersection')

>>> usaddress.tag('P.O. Box 123, Chicago, IL')
(OrderedDict([
   ('USPSBoxType', 'P.O. Box'),
   ('USPSBoxID', '123'),
   ('PlaceName', 'Chicago'),
   ('StateName', 'IL')]),
'PO Box')

在那里,您可以查询返回的字典并将其放入pandas DataFrame中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46744857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档