Python,计算另一列中值的出现频率

时间:2017-09-24 20:30:36

标签: python python-3.x pandas dataframe pandas-groupby

因此,我一直在寻找类似问题的解决方案并继续打击墙壁。我是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中出现的总数或实例数。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试:

df2['Total Instances'] = df2['Subscriber Key'].map(df1['Subscriber Key'].value_counts())