如何用Pandas按作者分组获取其评论过的唯一Subreddit列表
嘿,我来帮你搞定这个Pandas数据处理的需求!
按作者分组提取唯一Subreddit列表的正确方法
你的需求很明确:把存储Reddit评论的DataFrame,转换成每行对应一个作者、包含其所有评论过的唯一Subreddit列表的新DataFrame。这里给你一套可靠的实现方案:
核心代码示例
假设你的原始DataFrame名为reddit_comments,包含author(作者)和subreddit(子版块)这两个关键列,直接运行下面的代码就能得到结果:
import pandas as pd # 按作者分组,聚合得到每个作者的唯一subreddit列表 author_subreddit_df = reddit_comments.groupby('author')['subreddit']\ .agg(lambda x: list(x.unique()))\ .reset_index() # 可选:给列名起更清晰的名字 author_subreddit_df.columns = ['author', 'unique_subreddits']
代码逻辑拆解
我给你拆解下这段代码为什么能解决问题:
groupby('author'):把整个数据集按作者分组,每个组就是该作者的所有评论记录。.agg(lambda x: list(x.unique())):对每个分组里的subreddit列,先用unique()去掉重复的子版块名称,再用list()把去重后的结果转换成列表格式。.reset_index():把分组时自动生成的author索引转换成普通列,这样最终得到的就是标准的DataFrame结构——每行对应一个作者,第二列是他评论过的唯一子版块列表。
常见失败原因排查
如果之前的尝试没成功,大概率是踩了这些坑:
- 没加
unique():直接把所有subreddit转换成列表,导致里面有大量重复项。 - 误用
nunique():这个函数返回的是唯一值的数量,而不是具体的列表内容。 - 忘记
reset_index():分组后得到的是Series,而不是你需要的DataFrame结构。
内容的提问来源于stack exchange,提问作者Parseltongue
相关产品推荐
相关产品推荐

