Python如何对数据分组求和并返回总和最大的分组结果
问题原因
你用的sum()是对数值列做求和运算,你的news_title是字符串类型,无法执行求和计算,自然拿不到你要的计数结果。
正确实现方法
方案1:直接用value_counts()(更简便)
value_counts()是pandas专门用来统计字段值出现频次的方法,默认会按频次从高到低排序:
# 统计各公司出现频次 company_counts = df["company"].value_counts() # 取频次最高的公司和对应次数 top_company, top_times = company_counts.index[0], company_counts.iloc[0] # 输出结果 print(f"{top_company} 在新闻中被提及的次数最多 - {top_times} 次")
用你给出的样例数据跑这段代码,输出结果为:Facebook 在新闻中被提及的次数最多 - 3 次
方案2:用groupby实现
如果一定要用groupby语法,要把sum()换成count()做计数运算:
# 按公司分组统计新闻条目数 company_counts = df.groupby("company")["news_title"].count().sort_values(ascending=False) top_company, top_times = company_counts.index[0], company_counts.iloc[0] print(f"{top_company} 在新闻中被提及的次数最多 - {top_times} 次")
内容的提问来源于stack exchange,提问作者Domi
相关产品推荐
相关产品推荐

