多索引DataFrame按muni分组重采样并线性插值补全缺失年份
多索引DataFrame按组重采样并线性插值实现
需求说明
针对以muni和popDate为多层索引的DataFrame,需完成以下操作:
- 按每个
muni分组 - 对
popDate索引执行年度重采样(resample('A').mean()),补全缺失年份 - 用线性插值替换生成的NaN值
模拟数据
先构造示例DataFrame:
import pandas as pd interData = pd.DataFrame({ 'muni': ['Q1','Q1','Q1','Q2','Q2','Q2'], 'popDate': ['2015','2021','2022','2015','2017','2022'], 'population': [5,11,22,15,17,22] }) interData['popDate'] = pd.to_datetime(interData['popDate']) interData = interData.set_index(['muni','popDate'])
实现代码
通过groupby结合resample和interpolate完成需求:
# 按muni分组,对每个组执行年度重采样,再线性插值 result = interData.groupby('muni', group_keys=False).apply( lambda x: x.resample('A', level='popDate').mean().interpolate(method='linear') ) print(result)
结果说明
执行后会得到每个muni从最早年份到最晚年份的完整年度数据,缺失年份的population值通过线性插值计算得出。例如Q1的2016-2020年数据会基于2015年的5和2021年的11线性填充,Q2的2016、2018-2021年数据基于2015、2017、2022年的值插值得到。
内容的提问来源于stack exchange,提问作者principal-ideal-domain
相关产品推荐
相关产品推荐

