Python如何将指定时间范围的日期作为DataFrame列名添加
Pandas 实现方案
前置准备
首先确保已经安装pandas库,导入所需依赖:
import pandas as pd from datetime import datetime
步骤1:构造初始DataFrame(你已有该步骤可跳过)
df = pd.DataFrame({'Category': ['A', 'B', 'C']})
步骤2:生成目标月度首日序列
freq='MS'参数对应生成每月首日的时间序列,可根据需求调整起止日期:
# 固定起始日期 start_date = '2021-05-01' # 动态计算当前月首日,若需固定为示例的2021-10-01,直接赋值 end_date = '2021-10-01' 即可 end_date = datetime.today().replace(day=1).strftime('%Y-%m-%d') # 生成格式化后的日期列名列表 date_list = pd.date_range(start=start_date, end=end_date, freq='MS').strftime('%Y-%m-%d').tolist()
步骤3:批量添加新列并调整列顺序
写法1:循环添加(易理解)
# 新列默认值可按需修改,示例用空值pd.NA,也可设置为0、空字符串等 for date_col in date_list: df[date_col] = pd.NA # 调整列顺序符合要求 df = df[['Category'] + date_list]
写法2:assign批量赋值(更简洁)
# 一次性添加所有日期列 df = df.assign(**{d: pd.NA for d in date_list}) # 调整列顺序 df = df.reindex(columns=['Category'] + date_list)
最终输出示例
| Category | 2021-05-01 | 2021-06-01 | 2021-07-01 | 2021-08-01 | 2021-09-01 | 2021-10-01 |
|---|---|---|---|---|---|---|
| A | ||||||
| B | ||||||
| C |
内容的提问来源于stack exchange,提问作者anewone
相关产品推荐
相关产品推荐

