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

在R语言中按Name列补全缺失日期并将成绩补0的实现方法

解决按用户补全缺失日期并填充成绩的问题

我来帮你搞定这个日期补全的需求,用Python的Pandas库就能高效完成。先把你的原始数据整理成清晰的表格:

NameDateQuizHomework
John11-01-024010
John11-01-034720
John11-01-044110
John11-01-083510
John11-01-104315
John11-01-134010
Adam11-01-054110
Adam11-01-084115
Adam11-01-144910
Adam11-01-194020
Adam11-01-214010

具体实现步骤

核心思路是按用户分组,生成每个用户的完整日期序列,再和原始数据合并填充缺失值,代码如下:

  1. 导入库并加载数据
import pandas as pd

# 加载你的原始数据
data = {
    'Name': ['John', 'John', 'John', 'John', 'John', 'John', 'Adam', 'Adam', 'Adam', 'Adam', 'Adam'],
    'Date': ['11-01-02', '11-01-03', '11-01-04', '11-01-08', '11-01-10', '11-01-13', '11-01-05', '11-01-08', '11-01-14', '11-01-19', '11-01-21'],
    'Quiz': [40, 47, 41, 35, 43, 40, 41, 41, 49, 40, 40],
    'Homework': [10, 20, 10, 10, 15, 10, 10, 15, 10, 20, 10]
}

df = pd.DataFrame(data)
# 将日期列转换为datetime类型(注意格式是YY-MM-DD)
df['Date'] = pd.to_datetime(df['Date'], format='%y-%m-%d')
  1. 定义补全日期的函数并分组处理
def fill_missing_dates(group):
    # 生成该用户从最早到最晚日期的完整每日序列
    date_range = pd.date_range(start=group['Date'].min(), end=group['Date'].max(), freq='D')
    # 创建包含完整日期的临时DataFrame
    full_dates = pd.DataFrame({'Date': date_range, 'Name': group['Name'].iloc[0]})
    # 合并原始数据与完整日期,缺失的成绩填充为0
    merged = pd.merge(full_dates, group, on=['Name', 'Date'], how='left').fillna(0)
    # 将填充后的成绩转为整数(避免浮点数类型)
    merged[['Quiz', 'Homework']] = merged[['Quiz', 'Homework']].astype(int)
    return merged

# 按Name分组应用函数,生成最终结果
result_df = df.groupby('Name').apply(fill_missing_dates).reset_index(drop=True)
  1. 查看结果
    比如John的补全后数据片段:
NameDateQuizHomework
John2011-01-024010
John2011-01-034720
John2011-01-044110
John2011-01-0500
John2011-01-0600
John2011-01-0700
John2011-01-083510

关键说明

  • pd.date_range:自动生成连续的日期序列,freq='D'表示按天生成
  • 分组处理:确保每个用户的日期范围独立计算,不会互相干扰
  • fillna(0):把缺失的Quiz和Homework值统一替换为0
  • 类型转换:填充后数值会变成浮点数,转成整数保持数据一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:56:07