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

基于日期范围生成并追加DataFrame的技术实现求助

解决方案:生成并追加课程日期DataFrame

核心思路

无需手动转换嵌套列表,直接利用pandas的日期序列生成和DataFrame构造功能即可完成需求,分两步实现:生成初始DataFrame、追加新数据到已有DataFrame。


1. 生成初始DataFrame

实现一个函数,接收起始日期、结束日期(月-年格式)和课程名称,自动生成包含ID、Date(月份缩写-年份)、Course的DataFrame:

import pandas as pd

def create_course_df(start_date_str, end_date_str, course_name):
    # 解析输入的月-年字符串为datetime对象(默认取当月第一天)
    start_date = pd.to_datetime(start_date_str, format="%m-%Y")
    end_date = pd.to_datetime(end_date_str, format="%m-%Y")
    
    # 生成月度日期序列(freq='MS'表示每月初)
    monthly_dates = pd.date_range(start=start_date, end=end_date, freq='MS')
    
    # 将日期格式化为"月份缩写-年份"(例如Mar-2023)
    formatted_dates = monthly_dates.strftime("%b-%Y")
    
    # 构造DataFrame:ID从1开始递增,Date为格式化后的日期,Course列统一为输入的课程名
    df = pd.DataFrame({
        'ID': range(1, len(formatted_dates) + 1),
        'Date': formatted_dates,
        'Course': [course_name] * len(formatted_dates)
    })
    
    return df

示例调用

# 生成2023年3月到6月的Python编程课程数据
initial_df = create_course_df("03-2023", "06-2023", "Python编程")
print(initial_df)

输出结果:

ID      Date    Course
0   1  Mar-2023  Python编程
1   2  Apr-2023  Python编程
2   3  May-2023  Python编程
3   4  Jun-2023  Python编程

2. 追加新数据到已有DataFrame

实现追加逻辑,确保新数据的ID延续现有序列,并且合并到原DataFrame中:

def append_course_df(existing_df, start_date_str, end_date_str, course_name):
    # 生成新的临时DataFrame
    new_data_df = create_course_df(start_date_str, end_date_str, course_name)
    
    # 计算新数据的起始ID(延续现有最大ID)
    next_start_id = existing_df['ID'].max() + 1
    new_data_df['ID'] = range(next_start_id, next_start_id + len(new_data_df))
    
    # 合并现有DataFrame和新数据(ignore_index=True重置索引避免冲突)
    updated_df = pd.concat([existing_df, new_data_df], ignore_index=True)
    
    return updated_df

示例调用

# 追加2023年7月到9月的数据分析课程数据
updated_df = append_course_df(initial_df, "07-2023", "09-2023", "数据分析")
print(updated_df)

输出结果:

ID      Date    Course
0   1  Mar-2023  Python编程
1   2  Apr-2023  Python编程
2   3  May-2023  Python编程
3   4  Jun-2023  Python编程
4   5  Jul-2023    数据分析
5   6  Aug-2023    数据分析
6   7  Sep-2023    数据分析

可选调整:中文月份格式

如果需要将Date列改为中文月份(例如3月-2023),可以修改日期格式化逻辑:

# 自定义月份映射字典
month_map = {
    '01': '1月', '02': '2月', '03': '3月', '04': '4月',
    '05': '5月', '06': '6月', '07': '7月', '08': '8月',
    '09': '9月', '10': '10月', '11': '11月', '12': '12月'
}

# 替换格式化逻辑
formatted_dates = [f"{month_map[date.strftime('%m')]}-{date.year}" for date in monthly_dates]

替换后生成的Date列会显示为3月-2023这类格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:35:33