在 pandas 中使用 `groupby` 汇总 collections.Counter 个对象

Summing up collections.Counter objects using `groupby` in pandas

我正在尝试按 essay_Setdomain1_scorewords_count 列进行分组,并在 words_count 中添加计数器以添加此处提到的计数器结果:

>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d                       # add two counters together:  c[x] + d[x]
Counter({'a': 4, 'b': 3})

我使用这个命令将它们分组: words_freq_by_set = words_freq_by_set.groupby(by=["essay_set", "domain1_score"]) 但不知道如何通过计数器加法函数将其应用于 words_count 列,即 +。 这是我的数据框:

GroupBy.sum 适用于计数器对象。但是我应该提到这个过程是成对的,所以这可能不是很快。让我们试试

words_freq_by_set.groupby(by=["essay_set", "domain1_score"])['words_count'].sum()

df = pd.DataFrame({
    'a': [1, 1, 2], 
    'b': [Counter([1, 2]), Counter([1, 3]), Counter([2, 3])]
})
df

   a             b
0  1  {1: 1, 2: 1}
1  1  {1: 1, 3: 1}
2  2  {2: 1, 3: 1}


df.groupby(by=['a'])['b'].sum()

a
1    {1: 2, 2: 1, 3: 1}
2          {2: 1, 3: 1}
Name: b, dtype: object