【发布时间】:2018-08-07 17:22:37
【问题描述】:
我无法弄清楚如何对 pandas 日期时间索引数据帧进行重新采样,但需要最少数量的值才能给出值。我想将每日数据重新采样为每月数据,并要求至少存在 90% 的值才能产生值。
输入每日数据:
import pandas as pd
rng = pd.date_range('1/1/2011', periods=365, freq='D')
ts = pd.Series(pd.np.random.randn(len(rng)), index=rng)
ts['2011-01-01':'2011-01-05']=pd.np.nan #a short length of NANs to timeseries
ts['2011-10-03':'2011-10-30']=pd.np.nan #add ~ month long length of NANs to timeseries
1 月份只有几个 NAN,但 10 月份几乎有整整一个月的 NAN,我想要每月重采样总和的输出:
ts.resample('M').sum()
给出 10 月的 NAN(> 90% 的每日数据丢失)和 1 月的值(
2011-01-31 11.949479
2011-02-28 -1.730698
2011-03-31 -0.141164
2011-04-30 -0.291702
2011-05-31 -1.996223
2011-06-30 -1.936878
2011-07-31 5.025407
2011-08-31 -1.344950
2011-09-30 -2.035502
2011-10-31 -2.571338
2011-11-30 -13.492956
2011-12-31 7.100770
我已阅读 this post,使用滚动平均值和 min_periods;我宁愿继续使用 resample 来直接使用时间索引。这可能吗?我无法在重采样文档或堆栈溢出中找到很多内容来解决这个问题。
【问题讨论】:
-
This post 说明了 resample 如何能够使用日历月,但带有 min_periods 选项的“滚动”不能。
标签: python pandas resampling