使用字符串列表或字典来基于数据框中的现有列创建新列

时间:2019-01-08 09:08:09

标签: python python-3.x pandas dataframe

我目前在数据框的一列中有一组值。值没有特定的模式,在大多数情况下是随机的,但是我想设置自己的字典或列表,因此,如果字符串包含这些值,则可以创建一个新列以匹配这些关键字。我来自R背景,所以我之前做的是创建一个for循环,用grepl解压缩列表。

假设我有字典:

my_dict:

my_dict = {"BC": "Vancouver", "AB": "Calgary", "SK": ["Regina","Saskatoon"], "MB": ["Winnipeg","Brandon"], "ON":["Toronto","Ottawa"]}

本质上,我想要的是,如果字符串匹配过,请使用字典的键。同样,如果它们碰巧不匹配或关键字未在词典中列出,则将输入“其他”。这就是我想看到的。

df:

df = pd.DataFrame({"Name": ["Jordan","Paul","Adrian","Sarah","Becky","Shawn"], "City":["Vancouver - Lower Mainland","Calgary/Lethbridge","Regina / Moose Jaw","Brandon","Ottawa_Hamilton","Montreal"],
                "Province_Fixed": ["BC","AB","SK","MB","ON","Other"]})

“ Provinced_Fixed”列将作为输出。我想知道哪种方法是解决此问题的最佳方法。出于这个问题,我只是提供了一个字典,不需要以这种方式完成。 非常感谢!非常感谢。

1 个答案:

答案 0 :(得分:0)

按字典值移动并创建新行,并在所有行中匹配str.contains,对于list而言,也必须将|的值连接到正则表达式{{1}的一个字符串中}:

OR