如何用Pandas将用户每5条Tweet合并为一行并保留用户信息
解决按用户分组合并每5条Tweet并保留用户信息的问题
你的核心问题是之前的分组方式是全局按索引每5条聚合,会把不同用户的Tweet混在一起,而且没有关联userid和gender信息。正确的做法是先按用户分组,再在每个用户内部划分每5条的组,最后聚合时保留用户属性。
完整实现代码
# 为每个用户的Tweet生成组内分组标识:每5条为一组 df['group_key'] = df.groupby('userid').cumcount() // 5 # 按用户ID+组标识分组,合并Tweet并保留性别信息 df_merged = df.groupby(['userid', 'group_key'], as_index=False).agg( gender=('gender', 'first'), # 同一用户gender唯一,取任意值即可 merged_tweet=('tweet', ' '.join) )
代码说明
- 生成组内分组键:
groupby('userid').cumcount()会为每个用户的Tweet从0开始顺序编号,//5将编号每5个归为同一组(比如0-4对应组0,5-9对应组1,直到19,正好每个用户生成20组)。 - 分组聚合:同时按
userid和group_key分组,确保每个用户的分组独立;聚合时用first获取gender(同一用户的gender不会变化),用' '.join拼接同组的5条Tweet。
这样处理后,每个用户会对应20行数据,每行包含userid、gender和合并后的5条Tweet内容。
内容的提问来源于stack exchange,提问作者matin zarei
相关产品推荐
相关产品推荐

