例如,如果我想使用1天的总和在下面进行重新采样,则会得到预期的结果(5个数据点)
idx = pd.date_range('2018-01-01', periods=100, freq='H')
ts = pd.Series(range(len(idx)), index=idx)
data_sum= ts.resample('1d').agg(['sum'])
但是,尽管我使用相同的方法进行了1天的重采样,但仍获得了100个数据点的累积值。
data_cumsum= ts.resample('1d').agg(['cumsum'])
是不是应该只返回5个数据点?为什么cumsum的行为与其他aggs不同?
答案很简单-大部分功能聚合数据一样sum
,mean
但有些不一样cumsum
,diff
,ffill
,bfill
。
所以这是原因在差异resample
和也groupby
。
这是可能的用法Resampler.transform
-它重复了重新采样的数据,因此得到了100行,因为没有实现累加器的累加总和,因此使用Grouper
和的替代方法GroupBy.cumsum
:
data_sum= ts.resample('1d').transform('sum')
data_cumsum= ts.groupby(pd.Grouper(freq='1d')).cumsum()
print (data_sum)
2018-01-01 00:00:00 276
2018-01-01 01:00:00 276
2018-01-01 02:00:00 276
2018-01-01 03:00:00 276
2018-01-01 04:00:00 276
2018-01-04 23:00:00 2004
2018-01-05 00:00:00 390
2018-01-05 01:00:00 390
2018-01-05 02:00:00 390
2018-01-05 03:00:00 390
Freq: H, Length: 100, dtype: int64
print (data_cumsum)
2018-01-01 00:00:00 0
2018-01-01 01:00:00 1
2018-01-01 02:00:00 3
2018-01-01 03:00:00 6
2018-01-01 04:00:00 10
2018-01-04 23:00:00 2004
2018-01-05 00:00:00 96
2018-01-05 01:00:00 193
2018-01-05 02:00:00 291
2018-01-05 03:00:00 390
Freq: H, Length: 100, dtype: int64
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句