如何规整学生GPA数据?解决groupby+ffill后丢失Name列的问题
解决学生GPA数据合并及保留Name列的问题
问题根源:使用
groupby('Name')后直接执行ffill(),Name会被设为分组索引,而非普通数据列,导致后续结果中看不到该列。修复方案一:填充后重置索引恢复Name列
df2 = df.groupby('Name').ffill().reset_index()
修复方案二:针对不同场景的高效写法
- 如果每个学生的各学期GPA仅存在一条非NaN记录,直接取每组的非NaN值即可:
df2 = df.groupby('Name').first().reset_index() - 如果同一学生同一学期有多条有效GPA记录,可改用聚合函数保留所有有效值:
df2 = df.groupby('Name').agg(lambda x: x.dropna().tolist()).reset_index()
- 如果每个学生的各学期GPA仅存在一条非NaN记录,直接取每组的非NaN值即可:
效果验证:执行上述代码后,
Name列会被保留为普通数据列,同一学生的所有学期GPA将合并到同一行,NaN值被正确填充或整合。
内容的提问来源于stack exchange,提问作者Ramon Araneta
相关产品推荐
相关产品推荐

