这很简单,但我认为SO或Pandas文档中都没有涉及。
数据
两个DataFrame包含有关城市的数据。DataFrame UK包含一个用于英国城市名称的变量。已将其分组,因此没有重复的城市名称。这是该city变量的截断的示例(不是完整的DataFrame):
city
Hamilton
Edinburgh
Bury
...
Run Code Online (Sandbox Code Playgroud)
DataFrame US包含美国城市名称的相应变量。它确实有重复的城市名称,但实际上并没有重复的值,因为有许多城市使用相同的名称。再次,一个截断的示例:
city
Hamilton
Hamilton
Edinburgh
Edinburgh
Edinburgh
Bury
Bury
...
Run Code Online (Sandbox Code Playgroud)
(注意:变量在我的数据中的长度不同。)
目的
在UKDataFrame中创建一个新变量,该变量是每次US城市变量中的城市名称与城市变量中的城市名称匹配时的整数计数UK。
下面显示了我要输出的示例。假设有一个英国城市叫汉密尔顿,在美国有2个城市叫汉密尔顿。英国一个名为爱丁堡的城市,在美国有3场比赛。和Bury的2场比赛。
city count
Hamilton 2
Edinburgh 3
Bury 2
Run Code Online (Sandbox Code Playgroud)
我被困在哪里
如果我这样做
uk['count'] = uk['city'].isin(us['city']).astype(int)
Run Code Online (Sandbox Code Playgroud)
新变量是二进制1或0,表示存在匹配项,位于中间。但是我在努力用Pandas语法返回匹配计数。我已经尝试过添加value_counts唯一性和变体,但是这些没有用。也许我走错了路。
使用Series.value_counts计数出现在每个城市的数量US['city'],然后用Series.map这些罪名适用于相应的值UK['city']:
In [40]: US['city'].value_counts()
Out[40]:
Edinburgh 3
Bury 2
Hamilton 2
Name: city, dtype: int64
In [41]: UK['count'] = UK['city'].map(US['city'].value_counts())
In [42]: UK
Out[42]:
city count
0 Hamilton 2
1 Edinburgh 3
2 Bury 2
Run Code Online (Sandbox Code Playgroud)
如果有一个UK['city']不在的城市,US['city']则上面将为该NaN城市的计数列分配一个值。
| 归档时间: |
|
| 查看次数: |
4216 次 |
| 最近记录: |