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

Python:使用Asfreq与groupby处理DataFrame频率转换报错问题

解决DataFrame年度转月初频率时的重复轴错误

1. 先清理重复的日期索引

原数据存在重复日期是报错的核心原因,先对索引去重,保留每个日期的第一条数据:

# 若日期是直接作为索引
df = df[~df.index.duplicated(keep='first')]

# 若日期是普通列,先重置索引再处理
df = df.reset_index()
df = df.drop_duplicates(subset='日期列名', keep='first').set_index('日期列名')

2. 生成目标月初日期序列

用pd.date_range生成从原数据最早到最晚日期的所有月初日期,频率参数设为'MS'(代表月初):

start_date = df.index.min()
end_date = df.index.max()
monthly_index = pd.date_range(start=start_date, end=end_date, freq='MS')

3. 重索引并填充缺失值

基于清理后的DataFrame,重新索引到月初序列,再用ffill向前填充值:

result_df = df.reindex(monthly_index).ffill()

完整示例代码

import pandas as pd

# 模拟带重复日期的年度数据
data = {'数值列': [150, 230, 230]}
dates = pd.to_datetime(['2020-12-31', '2021-12-31', '2021-12-31'])
df = pd.DataFrame(data, index=dates)

# 索引去重
df = df[~df.index.duplicated(keep='first')]

# 生成月初序列
monthly_index = pd.date_range(start=df.index.min(), end=df.index.max(), freq='MS')

# 转换并填充
result_df = df.reindex(monthly_index).ffill()
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:18:19