如何在Pandas中实现分组合并(groupby)与填充操作?
解决方案
你可以通过以下步骤完成字段填充,直接整合到分组逻辑或对合并后的结果处理均可:
方法一:合并后统一处理
- 先重置分组后生成的多级索引,将分组列还原为普通列:
data_updated = data_updated.reset_index(drop=True)
- 对
Date、Name、Book使用向前填充(ffill)补全空值,同一分组内这些字段值一致,向前填充即可补全缺失行:
data_updated[['Date', 'Name', 'Book']] = data_updated[['Date', 'Name', 'Book']].ffill()
- 将
Course字段的空值填充为0:
data_updated['Course'] = data_updated['Course'].fillna(0)
方法二:整合到分组逻辑中
直接在groupby的apply函数内完成合并与填充,避免后续额外处理:
def merge_and_fill(group): merged = pd.merge(group, Likeliness, how='outer') # 填充分组内的Date、Name、Book字段 merged[['Date', 'Name', 'Book']] = merged[['Date', 'Name', 'Book']].ffill() # 将Course字段空值填充为0 merged['Course'] = merged['Course'].fillna(0) return merged data_updated = DF.groupby(['Date','Name','Book', 'Course'], group_keys=False).apply(merge_and_fill)
添加group_keys=False可避免生成冗余的分组索引,让结果结构更简洁。
内容的提问来源于stack exchange,提问作者Dutt
相关产品推荐
相关产品推荐

