在Pandas DataFrame中添加“计数”列

我有两个数据框,我将它们分别称为frame1和frame2。 frame1是较小的框架,并具有一个id列,其中每个单个id都是唯一的。 frame2较大,并且具有完全相同的id列,但是许多id是重复的。但是,frame2中唯一ID的数量与frame1中的行数相同... aka,frame2中的每个id都存在于frame1中。

我想做的是在frame1中添加一个“ counts”列,其中包含与frame2中的每个ID相关联的唯一度量标准类别的数量。

这是框架的外观:

enter image description here

因此,我想在“ frame1”中添加“ unique_metric_counts”列,其ID为1的ID为“ 3”,ID 2为“ 2”,ID 3为“ 1”。

对于如何执行此操作,我有一个很好的主意,问题是我认为它占用了Jupyter笔记本电脑中的大量内存,并且永远不会完成运行,因为这是在很大框架上的for循环。对于循环,我正在创建更大的临时框架。

这是我的代码:

frame1['unique_metric_counts'] = None

for x in frame1['id']:
    tempframe = frame2[frame2['id'].isin([x])]
    numUnique = tempframe['metric categories'].nunique()
    frame1['unique_metric_counts'] = numUnique

我相当确定该代码在理论上应该可以工作,但是我的数据帧绝对庞大,我认为不使用for循环,而仅使用Pandas功能会更好。任何帮助是极大的赞赏。

评论