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

使用Pandas按条件删除重复学生ID行并填充缺省字段值的实现方法

Pandas实现步骤
  • 核心逻辑是按student_id分组后,每个分组内取各列的非空值合并,刚好匹配你的数据规则:同一学生的不同字段有效值分散在两行,合并后就是完整的单条记录。

完整可运行代码

import pandas as pd

# --------------- 数据准备阶段 ---------------
# 你的实际使用可以替换为读取数据源的代码,例如pd.read_excel、pd.read_csv等
df = pd.DataFrame({
    'student_id': [1001, 1001, 1002, 1003, 1003],
    'completed': ['N', 'Y', 'N', 'N', 'Y'],
    'start_enroll': ['2013-09-03', pd.NA, '2014-09-02', '2008-08-25', pd.NA],
    'end_enroll': ['2017-02-27', pd.NA, '2020-05-30', '2012-08-10', pd.NA],
    'completed_date': [pd.NA, '2018-02-26', pd.NA, pd.NA, '2012-08-10']
})
# 可选:日期类字段统一转为datetime类型,方便后续计算
df[['start_enroll', 'end_enroll', 'completed_date']] = df[['start_enroll', 'end_enroll', 'completed_date']].apply(pd.to_datetime)

# --------------- 核心处理逻辑 ---------------
# 按student_id分组,每组内各列取第一个非空值,直接得到合并结果
result_df = df.groupby('student_id', as_index=False).agg(lambda col: col.dropna().iloc[0])

结果验证

运行后输出result_df即可得到你期望的结构,逻辑完全符合要求:

  • 有两条记录的学生自动合并:保留completed=Y,同时补全start_enroll、end_enroll字段
  • 只有一条记录的学生保留原数据不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:12:00