将月度均值DataFrame转换为十年日粒度时间序列
解决方案:月度均值转日粒度时间序列
前提假设
你的月度均值DataFrame(记为monthly_df)的索引为1-12,分别对应1月至12月的均值数据。
实现步骤
- 生成目标日期范围:创建2010年1月1日到2020年12月31日的所有日期序列。
- 匹配月度数据:给每个日期提取所属月份,将对应的月度均值映射到每一天。
- 整理最终结果:设置日期为索引,清理多余列,得到日粒度时间序列。
代码实现
import pandas as pd # 1. 生成完整日期序列 date_range = pd.date_range(start='2010-01-01', end='2020-12-31', freq='D') # 2. 创建日度DataFrame并提取月份 daily_df = pd.DataFrame({'date': date_range}) daily_df['month'] = daily_df['date'].dt.month # 3. 合并月度均值数据 daily_df = daily_df.merge(monthly_df, left_on='month', right_index=True, how='left') # 4. 调整结构:设置日期为索引,移除临时列 daily_df = daily_df.set_index('date').drop('month', axis=1)
补充说明
如果你的月度DataFrame索引是具体的年月(如2010-01)而非仅月份数字,只需修改提取月份的逻辑,改为提取年月标识后再匹配即可,示例代码如下:
# 假设月度DataFrame索引为YYYY-MM格式 daily_df['year_month'] = daily_df['date'].dt.to_period('M') daily_df = daily_df.merge(monthly_df, left_on='year_month', right_index=True, how='left') daily_df = daily_df.set_index('date').drop('year_month', axis=1)
内容的提问来源于stack exchange,提问作者spcol
相关产品推荐
相关产品推荐

