在 pandas 中使用 `groupby` 汇总 collections.Counter 个对象
Summing up collections.Counter objects using `groupby` in pandas
我正在尝试按 essay_Set
和 domain1_score
对 words_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
我正在尝试按 essay_Set
和 domain1_score
对 words_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