如何计算列的唯一组合的元素频率并存储在 Dataframe 的另一列中?

How to count the frequency of elements for unique combinations of columns and store in another column in Dataframe?

我有一个 pandas 数据框,其中包含 3 列 id1id2call_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?

我建议使用 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}

好老for循环

d = {}
for i, j, f in zip(*map(df.get, df)):
    x = d.setdefault((i, j), {})
    x[f] = x.get(f, 0) + 1

result = pd.Series(d).reset_index()
result.columns = df.columns
result

   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}