【问题标题】:Extracting zip code from a string with full address从具有完整地址的字符串中提取邮政编码
【发布时间】:2021-02-26 11:08:13
【问题描述】:

我已经抓取了一些网站来收集公司数据。地址数据就是其中之一。由于 HTML 标签,我只能在一个“标签”中抓取数据。下面是我的数据输出的一个示例。

Streetname housenumber zip-code city country
Street 1 1234 AB Amsterdam Netherlands
Longerstreetname 22 9876 XY Den Haag Netherlands
Name: Address, Length: 314, dtype: object

现在,我需要将邮政编码(仅邮政编码)提取到一个新列中以进行进一步分析。我主要在数据清理阶段使用熊猫。 (我需要找出每家公司位于哪个省)

我已经搜索了许多选项来找到提取邮政编码的方法,因此我没有成功。 任何帮助将不胜感激!

【问题讨论】:

  • 这是数据框的一部分吗?还是存储地址的不同变量?
  • @IshwarVenugopal 它确实是具有 6 个变量的熊猫数据框的一部分。所有变量都存储为“对象”。
  • 所以我假设这是名为“地址”的列中的值。对吗?
  • 你能发布数据框的样子吗?
  • @IshwarVenugopal 我将其添加到帖子中。很抱歉给您带来不便,但由于隐私问题无法分享确切的数据。

标签: python pandas dataframe data-cleaning zipcode


【解决方案1】:

我认为你可以使用正则表达式。

示例:

import re


address = '7802 Grant Avenue Egg Harbor Township, NJ 08234'
us_zip = r'(\d{5}\-?\d{0,4})'
zip_code = re.search(us_zip, address)
zip_code.group(1)

重要提示: 世界各地的邮政编码没有特定的模式。如果您想抓取来自不同国家/地区的公司,您应该为所有这些公司实施正则表达式。

希望这个文件可以帮助你。 zip codes regex

【讨论】:

    【解决方案2】:

    如果发布在问题中的示例输出是数据框中名为 Address 的类型为 object 的列中的值,则可以按如下方式创建具有提取邮政编码的新列:

    df['Zip Code'] = " ".join(str(df['Address']).split(" ")[2:4])

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多