Pandas:返回两个DataFrame变量之间匹配值的计数

2024-09-29 23:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一件很简单的事,但我不认为这件事已经在《熊猫》或《熊猫》的文档中有所涉及。在

数据

包含城市数据的两个数据帧。数据框UK包含一个用于英国城市名称的变量。它已分组,因此没有重复的城市名称。这是此city变量的截断示例(不是完整的数据帧):

city
Hamilton
Edinburgh
Bury
...

DataFrameUS包含一个对应的美国城市名称变量。它的确实有重复的城市名称,但这些名称实际上不是重复的值,因为有许多城市具有相同的名称。再举一个截短的例子:

^{pr2}$

(注意:我的数据中变量的长度不同。)

目标

UK数据帧中创建一个新变量,该变量是US城市变量中的城市名称与UK城市变量中的城市名称匹配时的整数计数。在

下面显示了我要使用的输出示例。比如说一个叫汉密尔顿的英国城市,在美国有两个叫汉密尔顿的城市。一个叫爱丁堡的英国城市在美国有3场比赛。两个火柴给伯里。在

city       count
Hamilton       2
Edinburgh      3
Bury           2

我的困境

如果我这么做。。。在

uk['count'] = uk['city'].isin(us['city']).astype(int)

新变量是一个二进制1或0,表示存在匹配项,该匹配项已达到一半。不过,我正在努力使用Pandas语法来返回匹配项的计数。我尝试过添加value_counts和unique的变体,但这些都没有起作用。也许我走错了路。在


Tags: 数据文档名称示例citycount例子计数
1条回答
网友
1楼 · 发布于 2024-09-29 23:26:41

使用^{}计算US['city']中每个城市的出现次数,然后使用^{}将这些计数应用到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

如果UK['city']中有一个不在US['city']中的城市,那么上面的操作将为该城市的count列分配一个NaN值。在

相关问题 更多 >

    热门问题