【问题标题】:How do I match two separate words as one string in pandas?如何在熊猫中将两个单独的单词匹配为一个字符串?
【发布时间】:2022-07-05 16:36:04
【问题描述】:

我有一个包含美国州和国家名称的列,以及一个也包含这些名称的列表。我想创建一个函数,如果找到它则返回州/国家。到目前为止,我已经能够为任何一个单词长的东西做到这一点,例如“巴西”或“墨西哥”。但是,该函数不匹配超过单词长度的实例,例如“纽约”或“开曼群岛”。

我的功能:

#alpha_list is my list of countries and US states

def locate_country(b):
    y = b.split(" ")
    a = [x for x in alpha_list if x in y]
    return a

df['country'] = df['locations'].apply(locate_country)

有没有办法调整它,让它也捕捉两个词?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以在此处使用str.extract 以及其他位置:

    alpha_list = ["Brazil", "Mexico", "Channel Islands"]
    regex = r'\b(' + r'|'.join(alpha_list) + r')\b'
    df["country"] = df["locations"].str.extract(regex)
    

    【讨论】:

    • 谢谢 - 这会返回识别的位置吗?
    • @work_python 我误读/误解了您的要求。我已经更新了我的答案,如果找到匹配项,新的country 列将包含一个国家/地区。否则它应该为空/NaN。
    • 谢谢!当我使用更新的函数时,我收到错误“列必须与值键长度相同” - 知道为什么会这样吗?
    • 您不需要函数,我的答案也没有使用函数。如果您直接运行我的答案,它应该可以工作。
    • 这就是我所做的,但我收到了上面提到的错误
    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2023-03-11
    • 2021-12-06
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多