我有一些时间序列数据,大部分是季度性的,但是以年-月-日的格式报告了多个变量和多个国家,但是有些日期的一些变量已经在季度的最后一天发布,其他的可能在接近最后一天发布。我想执行一个重新采样,将每一行聚集到频率的四分之一末尾。我有这个:
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
我想看到的是
^{pr2}$我尝试了几种不同的重采样方法。首先我试过了
df=df.groupby("Country").resample('Q').applymap(lambda x: df.shift(1) if math.isnan(x) else x)
然后我试着把所有的nan转换成0,然后按sum进行聚合,但这并不理想,因为我无法跟踪哪些数据实际上是零,哪些数据丢失了。在
df=df.fillna(0)
df=df.groupby("Country").resample('Q').sum()
下面是一个小例子,其中包含我自己的数据帧,可以按照您的需要进行操作。在
相关问题 更多 >
编程相关推荐