【发布时间】:2014-06-05 23:39:48
【问题描述】:
在使用 timedelta 对象时,我无法重新采样 Pandas 时间序列数据。 Pandas 很乐意计算 timedeltas 的 Series 的平均值,但在重新采样同一个 Series 时似乎会出错。
# a Series of timedeltas
rng = pd.date_range('1/1/2000', periods=100, freq='D')
r = [timedelta(hours=i) for i in np.random.random(len(rng))]
ts = pd.Series(r, index=rng)
ts.mean() # fine
# DataError: No numeric types to aggregate
ts.resample('M', how='mean')
# this is better, but ..
ts.resample('M', how=pd.Series.mean) # works. Hurrah.
ts.resample('T', how=pd.Series.mean) # fail: Must produce aggregated value
将函数 pd.Series.mean 直接传递给 resample 有效 - 对于某些数据,但会出错,例如,如果采样桶没有值(例如上面的 T 分钟)。我希望这就是为什么最好通过'mean' 并让 Pandas 做正确的事情的原因。在这种情况下,只有'mean' 似乎没有选择合适的功能。
This answer 回避同样的问题并提出groupby。这让我觉得更多的是一种解决方法(?)这种方式看起来应该工作,但我错过了什么? (熊猫 0.14)
【问题讨论】:
-
顺便说一句,上采样到“T”是没有意义的,它是每分钟的频率。
-
当然,同意这是一个有点荒谬的例子:)