Это простая вещь, но я не думаю, что она была покрыта на SO или в документации Pandas.Pandas: Возвращает количество совпадающих значений между двумя переменными DataFrame
Данные
Два DataFrames, содержащие данные о городах. DataFrame UK
содержит переменную для названий городов Великобритании. Он сгруппирован, чтобы не было дублированных названий городов. Это усеченный пример этой city
переменной (не полный DataFrame):
city
Hamilton
Edinburgh
Bury
...
DataFrame US
содержит соответствующую переменную для названий городов США. Это делает имеют дублированные названия городов, но они не являются фактически дублирующими значениями, так как существует множество городов с тем же именем. Опять же, усеченный пример:
city
Hamilton
Hamilton
Edinburgh
Edinburgh
Edinburgh
Bury
Bury
...
(Примечание. Переменные не такой же длины в моих данных)
Цель
Создать новую переменную в UK
DataFrame который является целым числом для каждого времени, когда название города в городской переменной US
соответствует имени города в городской переменной UK
.
Ниже приведен пример вывода, на который я нацелен. Скажем, для одного британского города под названием Гамильтон есть 2 города под названием Гамильтон в США. Для одного британского города под названием Эдинбург в США есть 3 матча. И 2 матча для Бери.
city count
Hamilton 2
Edinburgh 3
Bury 2
Где я застрял
Если я сделаю это ...
uk['count'] = uk['city'].isin(us['city']).astype(int)
новая переменная является бинарной 1 или 0, указывающее, что есть совпадение, что почти на месте. Однако я борюсь с синтаксисом Pandas, чтобы вернуть счет матчей. Я попытался добавить value_counts
и варианты уникальных, но они не сработали. Может быть, я подхожу к этому неправильно.