因此,我一直在寻找类似问题的解决方案并继续打击墙壁。我是python的新手,并使用pandas / python进行ETL,如果我没有充分描述我的情况,请原谅我。
我有两个数据帧df1看起来像:
Subscriber Key OtherID AnotherID
1 'abc' '12' '23'
2 'bcd' '45' '56'
3 'abc' '12' '23'
4 'abc' '12' '23'
5 'cde' '78' '90'
6 'bcd' '45' '56'
df2看起来像:
Subscriber Key OtherID AnotherID
1 'abc' '12' '23'
2 'bcd' '45' '56'
3 'cde' '78' '90'
我正在尝试返回一个计数次数SubscriberKey:' abc'发生在数据帧中。找到值后,我想将计数附加到另一个数据帧(df2),这是我的第一个重复数据删除的数据帧。
看起来像这样:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '3'
2 'bcd' '45' '56' '1'
3 'cde' '78' '90' '1'
所以我所做的就是尝试使用这一行:
df1.groupby(['SubscriberKey']).size()
我之所以仅使用' SubscriberKey'是因为某些行只有该列填充了' OtherID'和' AnotherID'空白。
我也尝试过Series.value_count()。当我尝试使用groupby和size()并将df2 [' Total Instances']的值设置为出现次数时,似乎值不正确排列。
例如,新表如下所示:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '1'
2 'bcd' '45' '56' '3'
3 'cde' '78' '90' '2'
所以我原来的想法可能是在做groupby时,该函数会自动对输出进行排序。我尝试通过将groupby&#f; d表保存为csv进行检查,并意识到它只打印出count列而不是关联的subscriberkey列。
无论如何,是否有人对我如何实现这一点有任何意见?重申一下,我想基本上只添加一个列到df2,它返回df1中出现的总数或实例数。
谢谢!
答案 0 :(得分:1)
您可以尝试:
df2['Total Instances'] = df2['Subscriber Key'].map(df1['Subscriber Key'].value_counts())