首页 > 解决方案 > Pandas:将子字符串与字符串列表匹配

问题描述

我有一个熊猫系列中所有美国城市(150k+)的列表,比如

import pandas as pd
master_city = pd.Series(['Lake Ketchum', 'Arletta', 'Glenoma', ..., 'Curlew'])

我有另一个系列,其中包含收件人列表,例如:

addresses = pd.series(['Headquarters 1120 N Street Lake Ketchum 916-654-5266', 'District 1 1656 Union Street Glenoma 707-445-6600', '1657 Riverside Drive Redding, CA 96001'])

我想查看地址系列中的每个地址是否包含主城市系列中任何城市的完全匹配。这是为了验证所有地址中的城市名称是否正确。在这种情况下,地址 1、2 应该匹配,因为它包含 Lake Ketchum 和 Glenoma 的完全匹配。

这可以用任何系列字符串方法以矢量化方式完成吗?

标签: pythonpandas

解决方案


我认为对于不太复杂的情况下的完全匹配,您可以尝试以下操作:

for item in master_city:
    matches = addresses[addresses.str.contains(item)]
    # matches is a pd series with indices of addresses matching to the `item` 
    # do whatever with matches

推荐阅读