首页 > 解决方案 > 如何计算列的唯一组合的元素频率并存储在 Dataframe 的另一列中?

问题描述

我有一个包含 3 列的pandas 数据框id1,其中数据的格式如下id2call_freq

输入:

id1 id2 call_frequency
1   1   2
1   1   3
1   1   3
1   1   3
1   1   3
1   2   5
1   2   5
1   2   4
2   1   9
2   2   6
2   2   6
2   2   7
2   2   7
2   2   7
2   2   7

输出:

在此处输入图像描述

call_frequency_dict列应包含一个字典字符串,其中包含 call_frequency 中的元素,用于组合id1id2及其频率作为值。

我尝试搜索但没有发现任何帮助。我怎样才能得到call_frequency_dict

标签: pythonpandasdataframedictionaryfrequency

解决方案


我会推荐使用value_counts而不是将这些类型的数据推送到dict

df.groupby(['id1','id2']).call_frequency.value_counts()

匹配您的输出

import collections 
df.groupby(['id1','id2']).call_frequency.agg(collections.Counter).reset_index()
Out[55]: 
   id1  id2 call_frequency
0    1    1   {2: 1, 3: 4}
1    1    2   {5: 2, 4: 1}
2    2    1         {9: 1}
3    2    2   {6: 2, 7: 4}

推荐阅读