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

导入Excel统计年度每日事件数时触发ValueError: cannot insert Date, already exists

解决Pandas分组时"cannot insert Date, already exists"错误

问题场景

导入Excel文件提取日期列,统计2012年至今每年每日的事件发生数量时,运行代码触发如下错误:

ValueError: cannot insert Date, already exists

用户原代码:

import pandas as pd

file_path = r'C:\Users\xxx\Desktop\yyy.xlsx'
data = pd.read_excel(file_path)
data['Date'] = pd.to_datetime(data['AVVIATO'])
data['Year'] = data['Date'].dt.year
data['DayOfYear'] = data['Date'].dt.dayofyear
df = data.groupby([pd.Grouper(key='Date', freq='D'), pd.Grouper(key='Date', freq='Y')]).size().reset_index(name='counts')
df['CumulativeSum'] = df.groupby('Date')['counts'].cumsum()
df['YearCount'] = df.groupby('Year').cumcount() + 1
export_path = r'C:\Users\adrcl\Desktop\output.xlsx'
df.to_excel(export_path, index=False)

错误原因

代码中groupby同时使用了两个基于Date列的pd.Grouper(日频和年频),但两者默认输出列名都为Date。执行reset_index()时,Pandas尝试将这两个分组键都插入结果DataFrame,导致列名重复冲突。

修正方案

给年度分组的pd.Grouper指定name参数重命名,避免和日频分组的Date列重名,同时调整后续依赖年份的计算逻辑:

import pandas as pd

file_path = r'C:\Users\xxx\Desktop\yyy.xlsx'
data = pd.read_excel(file_path)
data['Date'] = pd.to_datetime(data['AVVIATO'])
# 过滤2012年及以后的数据,匹配需求
data = data[data['Date'].dt.year >= 2012]

# 分组时给年度Grouper命名为Year,解决列名重复问题
df = data.groupby(
    [
        pd.Grouper(key='Date', freq='D'),
        pd.Grouper(key='Date', freq='Y', name='Year')
    ]
).size().reset_index(name='counts')

# 每日事件累计和(按日期分组)
df['CumulativeSum'] = df.groupby('Date')['counts'].cumsum()
# 年度内天数计数(按Year分组)
df['YearCount'] = df.groupby('Year').cumcount() + 1

# 可选:将Year列从年末日期格式转换为纯年份数值,更直观
df['Year'] = df['Year'].dt.year

export_path = r'C:\Users\adrcl\Desktop\output.xlsx'
df.to_excel(export_path, index=False)

关键修正点

  1. 用name='Year'给年度分组键重命名,彻底解决列名重复冲突
  2. 添加数据过滤逻辑,仅保留2012年及以后的数据,精准匹配需求
  3. 将分组后的Year列从年末日期格式转为纯年份数值,优化统计结果可读性
  4. 完整保留原有的每日事件数统计、累计和、年度内天数计数逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:25