【发布时间】:2017-11-27 05:27:50
【问题描述】:
我有一些主要是季度的时间序列数据,但以年-月-日格式报告了多个变量和多个国家/地区,但是某些日期的某些变量已在季度的最后一天发布,而其他变量可能发布在接近最后一天。我想执行一个重新采样,将每一行聚合到频率的四分之一结束。我有这个:
Date Country Var1 Var2 Var3
2012-03-30 China 12 Nan 200
2012-03-31 China Nan 50 Nan
2012-06-28 China 13 Nan 199
2012-06-30 China Nan 48 Nan
2012-09-30 China 13 49 200
2012-12-31 China 12 50 201
我想看到的是
Date Country Var1 Var2 Var3
2012-03-31 China 12 50 200
2012-06-30 China 13 48 199
2012-09-30 China 13 49 200
2012-12-31 China 12 50 201
我尝试了几种不同的重新采样想法。首先我尝试了
df=df.groupby("Country").resample('Q').applymap(lambda x: df.shift(1) if math.isnan(x) else x)
然后我尝试将所有 Nans 转换为零,然后按总和进行聚合,但这并不理想,因为我无法跟踪哪些数据实际上为零以及哪些数据丢失。
df=df.fillna(0)
df=df.groupby("Country").resample('Q').sum()
【问题讨论】:
-
我的回答对你有用吗?
标签: python pandas time-series