【发布时间】:2021-02-23 20:54:25
【问题描述】:
我想对一些时间序列数据进行下采样,给出每个季度的最后一个值:
import numpy as np
import pandas as pd
index = pd.date_range(start='2020', freq='M', periods=6)
data = np.ones(6)
data[4:6] = np.nan
datetime
2020-01-31 1.0
2020-02-29 1.0
2020-03-31 1.0
2020-04-30 1.0
2020-05-31 NaN
2020-06-30 NaN
Freq: M, dtype: float64
我的要求是,如果最后一个值是nan,那么下采样的值也应该是nan,而不是segment中最后一个非nan值。 这将是截至 4/30 的 1.0,我们不希望这样。我们想要第二季度的 NAN。
根据文档,您可以将 .last() 与“min_count”关键字一起使用,但实际上失败了 - 熊猫待定的错误报告。这不是问题。
datetime.resample('Q').last(min_count=3)
TypeError Traceback (most recent call last)
<ipython-input-15-bd5dfd934676> in <module>
----> 1 datetime.resample('Q').last(min_count=3)
~/miniconda3/lib/python3.7/site-packages/pandas/core/resample.py in g(self, _method, *args, **kwargs)
934
935 def g(self, _method=method, *args, **kwargs):
--> 936 nv.validate_resampler_func(_method, args, kwargs)
937 return self._downsample(_method)
938
~/miniconda3/lib/python3.7/site-packages/pandas/compat/numpy/function.py in validate_resampler_func(method, args, kwargs)
383 )
384 else:
--> 385 raise TypeError("too many arguments passed in")
386
387
TypeError: too many arguments passed in
在解决之前,我怎样才能实现我的目标?
【问题讨论】:
-
看起来像
datetime[datetime.resample('Q').last().index]? -
有趣。你能详细说明一下吗?
-
试图理解评论,我认为它使用了bin最后一条记录的索引。这适用于宿舍。我的例子并不完全正确,我认为它没有区别。但是季度下采样使用最后一个数据点作为标签。较低的时间框架不会。所以我认为它不适用于例如。分钟。
标签: python pandas pandas-groupby resampling