Сопоставление подстрок из фрейма данных для возврата значений в качестве нового столбца - PullRequest
1 голос
/ 06 марта 2020

Если у меня есть столбец почтового индекса, я хочу иметь возможность связывать подстроки каждой строки с определенными регионами. Я думал об использовании словаря

dict = {'SW1': 'Лондон', 'NE': 'Лондон', 'W1A': 'Другое', 'CT': 'Другое'}

Postal Code  
SW1E 5Z
NE99 1AR
SW1
W1A 1ER
CT21 4JF

Желаемая таблица:

Postal Code   Region
SW1E 5Z       London
NE99 1AR      London
SW1           London
W1A 1ER       Other
CT21 4JF      Other

Однако я не знаю, как проанализировать подстроки столбца, чтобы создать столбец региона с помощью python (pandas). Посоветуйте пожалуйста по синтаксису

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Я думаю, вы можете легко найти город с помощью функции lambda:

dict_ = {'SW1': 'London','NE':'London','W1A':'Other','CT':'Other'}

firstpostal = 'SW1E'
secondpostal = 'abc'

findcountry = lambda postal: [dict_[i] for i in dict_.keys() if i in postal]


print(findcountry(firstpostal))
print(findcountry(secondpostal))


и вывода:

['London']
[]

Вы можете проверить список вывода, если город найден или нет.

0 голосов
/ 06 марта 2020

Используйте series.str.extract на основе ключей словаря и отобразите их обратно для создания нового столбца.

df['Region']=(df['Postal Code'].str.extract('('+'|'.join(mydict.keys())+')',expand=False)
                                                                           .map(mydict))
print(df)

  Postal Code  Region
0     SW1E 5Z  London
1    NE99 1AR  London
2         SW1  London
3     W1A 1ER   Other
4    CT21 4JF   Other

Примечание Я переименовал dict на mydict, поскольку dict является встроенной переменной и переопределяет поведение словаря, если хранится как переменная.

...