ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-将元组的无序列表转换为pandas DataFrame

2019-11-10 18:09:26  阅读:633  来源: 互联网

标签:concat pandas python-3-x tuples python


我正在使用库usaddress来解析我拥有的一组文件中的地址.我希望我的最终输出是一个数据框,其中列名代表地址的一部分(例如街道,城市,州),行代表我提取的每个地址.例如:

假设我有一个地址列表:

addr = ['123 Pennsylvania Ave NW Washington DC 20008', 
        '652 Polk St San Francisco, CA 94102', 
        '3711 Travis St #800 Houston, TX 77002']

然后使用usaddress提取它们

info = [usaddress.parse(loc) for loc in addr]

“ info”是元组列表的列表,看起来像这样:

[[('123', 'AddressNumber'),
  ('Pennsylvania', 'StreetName'),
  ('Ave', 'StreetNamePostType'),
  ('NW', 'StreetNamePostDirectional'),
  ('Washington', 'PlaceName'),
  ('DC', 'StateName'),
  ('20008', 'ZipCode')],
 [('652', 'AddressNumber'),
  ('Polk', 'StreetName'),
  ('St', 'StreetNamePostType'),
  ('San', 'PlaceName'),
  ('Francisco,', 'PlaceName'),
  ('CA', 'StateName'),
  ('94102', 'ZipCode')],
 [('3711', 'AddressNumber'),
  ('Travis', 'StreetName'),
  ('St', 'StreetNamePostType'),
  ('#', 'OccupancyIdentifier'),
  ('800', 'OccupancyIdentifier'),
  ('Houston,', 'PlaceName'),

我希望每个列表(对象“ info”中有3个列表)表示一行,每个元组对的2值表示列,而元组对的1值表示值.注意:内部列表的链接并不总是相同的,因为并非每个地址都具有每一个信息.

任何帮助将非常感激!

谢谢

解决方法:

不知道是否有一个DataFrame构造函数可以完全像现在一样处理信息. (也许from_records或from_items?-仍然不认为该结构是直接兼容的.)

进行一些操作即可获得所需的内容:

cols = [j for _, j in info[0]]

# Could use nested list comprehension here, but this is probably
#     more readable.
info2 = []
for row in info:
    info2.append([i for i, _ in row])

pd.DataFrame(info2, columns=cols)

  AddressNumber    StreetName StreetNamePostType StreetNamePostDirectional   PlaceName StateName ZipCode
0           123  Pennsylvania                Ave                   NW       Washington        DC   20008
1           652          Polk                 St                  San       Francisco,        CA   94102

标签:concat,pandas,python-3-x,tuples,python
来源: https://codeday.me/bug/20191110/2014261.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有