【发布时间】:2017-09-24 20:30:36
【问题描述】:
所以我一直在搜索 stackoverflow 以寻找类似问题的解决方案,并不断碰壁。我是 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 的表保存为 csv 来进行检查,并意识到它只打印出 count 列,而不是与之关联的subscriberkey 列。
无论如何,有人对我如何实现这一目标有任何意见吗?重申一下,我想基本上只是向 df2 添加一列,返回 df1 中出现或实例的总数。
谢谢!
【问题讨论】:
标签: python python-3.x pandas dataframe pandas-groupby