基于DataFrame相同单词分组:实现求和与频次统计的方法
Pandas分组聚合实现求和与频次统计
你遇到的问题是因为groupby(注意你拼写错成了grouby)返回的是分组容器对象,不是最终的聚合结果,需要配合聚合函数才能得到目标DataFrame,另外你的分组列名也写错了(原DataFrame列是words不是word)。
直接用以下代码就能实现需求:
# 按words分组,同时完成求和与频次统计 df2 = df.groupby('words').agg( likes=('likes', 'sum'), # 对likes列求和 num_comments=('num_comments', 'sum'), # 对num_comments列求和 frequency=('words', 'size') # 统计每组行数(即单词出现频次) ).reset_index()
代码说明:
groupby('words'):按words列的不同值分组agg():批量指定各列的聚合规则,这里分别对数值列求和,对分组列用size()统计出现次数reset_index():将作为索引的words列还原为普通列,结构和你给出的目标df2完全一致
如果分步实现也可以:
# 第一步:分组求和 sum_result = df.groupby('words')[['likes', 'num_comments']].sum() # 第二步:统计每个单词的出现频次 freq_result = df['words'].value_counts().rename('frequency') # 第三步:合并结果并重置索引 df2 = sum_result.join(freq_result).reset_index()
两种方法都会得到你需要的结果:
words likes num_comments frequency 0 bird 939 7303 4 1 lucky 628 6155 2 2 pie 961 11115 2 3 song 419 2035 2
内容的提问来源于stack exchange,提问作者DavidReynisson
相关产品推荐
相关产品推荐

