如何为Pandas日度时间序列按国家补全NaN值直至当年年末
按国家补全日度时间序列到年末的实现方案
使用pandas操作即可实现需求,具体步骤和代码如下:
前置准备
首先确保你已经导入pandas库,且对原始数据做基础预处理:
import pandas as pd # 1. 将日期列转换为datetime格式 df['XXX Day'] = pd.to_datetime(df['XXX Day']) # 2. 可选:如果数据包含非2021年的记录,先过滤仅保留2021年数据 df = df[df['XXX Day'].dt.year == 2021]
核心实现(推荐方案)
通过生成国家+全量日期的笛卡尔积,再匹配原数据的方式实现,不受原数据时间范围限制,可直接补全到2021年末:
# 生成2021年全年的每日日期序列 all_dates = pd.date_range(start='2021-01-01', end='2021-12-31', freq='D') # 提取所有去重的国家列表 all_countries = df['From Country'].unique() # 生成国家和日期的全量组合多重索引 full_index = pd.MultiIndex.from_product([all_countries, all_dates], names=['From Country', 'XXX Day']) # 重索引匹配原数据,缺失值自动填充为NaN df_result = df.set_index(['From Country', 'XXX Day']).reindex(full_index).reset_index() # 可选:如果需要将NaN替换为空字符串,执行以下代码 df_result['Quantity'] = df_result['Quantity'].fillna('')
说明
最终得到的df_result就是需求结果,每个国家都包含2021年1月1日到12月31日的全量日期,原有数据的Quantity保留,缺失日期对应的Quantity默认填充为NaN,也可根据需求替换为空值。
内容的提问来源于stack exchange,提问作者neutralname
相关产品推荐
相关产品推荐

