You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas实战:如何找出对应最高点赞数的标题单词数量

解决标题单词数量与最高点赞数对应关系的最优方案

嘿,我来帮你理清楚这个问题~你之前的代码问题出在groupby的逻辑和apply的使用上,咱们一步步来解决:

第一步:高效计算每个标题的单词数量

首先要给每个标题计算单词数,这里强烈推荐用Pandas的向量化字符串方法,比你想用的apply高效得多(尤其是数据量大的时候),而且能处理多空格、首尾空格这类边界情况:

# 新增word_count列,分割任意空白符后取长度
df['word_count'] = df['headline'].str.split().str.len()

这里用str.split()默认分割任意空白字符,比split(' ')更鲁棒,不会因为标题里的多个空格导致单词数计算错误。

第二步:根据需求选择对应实现

需求1:查看每个单词数量对应的最高点赞数

如果想知道“不同单词数的标题分别能达到的最高点赞数”,按单词数分组后取点赞数的最大值,再排序即可:

# 按单词数分组,求每组最高点赞数,按点赞数降序排列
word_count_max_upvotes = df.groupby('word_count')['upvotes'].max().sort_values(ascending=False)

返回的结果是一个Series,索引是单词数量,值是该单词数标题能拿到的最高点赞数,能直观看到哪个长度的标题表现最好。

需求2:直接找到最高点赞标题的单词数量

如果只想知道“获得最高点赞的标题有多少个单词”,直接定位到点赞数最高的行即可:

# 获取点赞数最高的行
top_voted_row = df.loc[df['upvotes'].idxmax()]
# 输出结果
print(f"最高点赞数:{top_voted_row['upvotes']},对应标题单词数:{top_voted_row['word_count']}")

为什么你的原代码会出错?

你之前写的df.groupby('upvotes')['headline'].apply(lambda x: len(x.split(' ')))有两个问题:

  1. 逻辑倒置:你需要先计算每个标题的单词数,再按单词数分组看点赞情况,而不是按点赞数分组去处理标题;
  2. apply的对象错误:groupby('upvotes')后,每个分组的headline是同一点赞数下所有标题组成的Series,不是单个字符串,所以调用x.split(' ')会报错——Series没有split方法。

内容的提问来源于stack exchange,提问作者Matt Hough

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:47:22