Python,统计另一列中值的出现频率
Python, count frequency of occurrence for value in another column
所以我一直在搜索 Whosebug 以寻找类似问题的解决方案,并不断碰壁。我是 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'
我正在尝试 return 计算 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'] 的值设置为出现次数时,这些值似乎没有正确排列。
例如新 table 看起来像这样:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '1'
2 'bcd' '45' '56' '3'
3 'cde' '78' '90' '2'
所以我最初的想法可能是在执行 groupby 时,该函数会自动对我的输出进行排序。我试图通过将 groupby table 保存为 csv 来进行检查,并意识到它只打印出计数列而不是相关的 subscriberkey 列。
无论如何,有人对我如何实现这一目标有任何意见吗?重申一下,我基本上只想向 df2 添加一列,即 returndf1 中出现或实例的总数。
谢谢!
你可以试试:
df2['Total Instances'] = df2['Subscriber Key'].map(df1['Subscriber Key'].value_counts())
所以我一直在搜索 Whosebug 以寻找类似问题的解决方案,并不断碰壁。我是 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'
我正在尝试 return 计算 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'] 的值设置为出现次数时,这些值似乎没有正确排列。
例如新 table 看起来像这样:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '1'
2 'bcd' '45' '56' '3'
3 'cde' '78' '90' '2'
所以我最初的想法可能是在执行 groupby 时,该函数会自动对我的输出进行排序。我试图通过将 groupby table 保存为 csv 来进行检查,并意识到它只打印出计数列而不是相关的 subscriberkey 列。
无论如何,有人对我如何实现这一目标有任何意见吗?重申一下,我基本上只想向 df2 添加一列,即 returndf1 中出现或实例的总数。
谢谢!
你可以试试:
df2['Total Instances'] = df2['Subscriber Key'].map(df1['Subscriber Key'].value_counts())