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

Pandas筛选季度最后可用日期行时出现ValueError的解决方法

解决获取季度最后可用日期对应行的报错问题

原始数据集

data = {'Date': ['2022-01-01', '2022-02-15', '2022-03-10', '2022-04-20', '2022-05-05', '2022-06-30', '2022-07-15', '2022-08-10', '2022-09-25', '2022-09-25'],
        'Value': [10, 15, 20, 25, 30, 35, 40, 45, 50, 50]}

期望结果

Date  Value
0 2022-03-10     20
1 2022-06-30     35
2 2022-09-25     50
3 2022-09-25     50

用户错误代码及报错

错误代码

import pandas as pd

# Create sample DataFrame
data = {'Date': ['2022-01-01', '2022-02-15', '2022-03-10', '2022-04-20', '2022-05-05', '2022-06-30', '2022-07-15', '2022-08-10', '2022-09-25', '2022-09-25'],
        'Value': [10, 15, 20, 25, 30, 35, 40, 45, 50, 50]}

df = pd.DataFrame(data)

# Convert 'Date' column to datetime format
df['Date'] = pd.to_datetime(df['Date'])

# Create a new DataFrame with last dates of quarters
last_dates = df.resample('Q', on='Date').last().reset_index()

# Merge the original DataFrame with the last_dates DataFrame
df = pd.merge(df, last_dates, on='Date')

print(df)

报错信息

ValueError: cannot insert Date, already exists

问题原因

  1. 列名冲突:df.resample('Q', on='Date').last()的结果中,index是每个季度的结束日期(如2022-03-31),列包含原数据的Date和Value;调用reset_index()后,会将季度结束日期作为新列插入,默认列名为Date,导致last_dates中出现两个同名的Date列,触发合并时的列名冲突报错。
  2. 逻辑偏差:resample().last()仅会提取每个季度的最后一行数据,无法保留原数据中同一日期的多行记录(如2022-09-25的两行),不符合期望结果。

正确解决方案

通过分组提取每个季度的最后可用日期,再筛选原数据中对应日期的所有行:

import pandas as pd

data = {'Date': ['2022-01-01', '2022-02-15', '2022-03-10', '2022-04-20', '2022-05-05', '2022-06-30', '2022-07-15', '2022-08-10', '2022-09-25', '2022-09-25'],
        'Value': [10, 15, 20, 25, 30, 35, 40, 45, 50, 50]}

df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])

# 按季度分组,获取每个季度的最后可用日期
quarterly_last_dates = df.groupby(df['Date'].dt.to_period('Q'))['Date'].max().tolist()

# 筛选原数据中日期属于季度最后可用日期的所有行
result = df[df['Date'].isin(quarterly_last_dates)]

# 可选:重置索引以匹配期望结果的格式
result = result.reset_index(drop=True)

print(result)

运行结果

Date  Value
0 2022-03-10     20
1 2022-06-30     35
2 2022-09-25     50
3 2022-09-25     50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:47:50