【发布时间】:2015-10-30 17:35:17
【问题描述】:
这是一件简单的事情,但我认为 SO 或 Pandas 文档中没有涵盖它。
数据
两个包含城市数据的 DataFrame。 DataFrame UK 包含一个英国城市名称的变量。它已被分组,因此没有重复的城市名称。这是这个city 变量的截断示例(不是完整的DataFrame):
city
Hamilton
Edinburgh
Bury
...
DataFrame US 包含美国城市名称的对应变量。它确实有重复的城市名称,但这些实际上不是重复的值,因为有许多同名的城市。同样,一个截断的例子:
city
Hamilton
Hamilton
Edinburgh
Edinburgh
Edinburgh
Bury
Bury
...
(注意:我的数据中的变量长度不同。)
目标
在UK DataFrame 中创建一个新变量,该变量是每次US 城市变量中的城市名称与UK 城市变量中的城市名称匹配时的整数计数。
下面显示了我想要的输出示例。假设一个名为汉密尔顿的英国城市在美国有两个名为汉密尔顿的城市。对于一个名为爱丁堡的英国城市,在美国有 3 场比赛。 Bury 有 2 场比赛。
city count
Hamilton 2
Edinburgh 3
Bury 2
我被困在哪里
如果我这样做......
uk['count'] = uk['city'].isin(us['city']).astype(int)
新变量是二进制1或0,表示存在匹配,匹配到一半。但是,我正在努力使用 Pandas 语法来返回匹配的 count。我试过附加 value_counts 和 unique 的变体,但这些都不起作用。也许我以错误的方式接近这个。
【问题讨论】: