2024-05-23 14:45:26 发布
网友
假设
s = pd.Series(range(50))
0 0 1 1 2 2 3 3 ... 48 48 49 49
我怎样才能得到由n行和组成的新序列?
当n=5时,预期结果如下
0 10 1 35 2 60 3 85 ... 8 210 9 235
如果python使用loc或iloc和loop,当然可以完成,但是我相信可以简单地用Pandas的方式完成。
另外,这是一个非常简单的例子,我不期望序列的解释:)。我正在尝试的实际数据系列的值是时间索引和每秒发生的事件数。
GroupBy.sum
N = 5 s.groupby(s.index // N).sum() 0 10 1 35 2 60 3 85 4 110 5 135 6 160 7 185 8 210 9 235 dtype: int64
将索引分成5组并相应地分组。
numpy.reshape
sum
如果大小是N(或5)的倍数,则可以重塑并添加:
s.values.reshape(-1, N).sum(1) # array([ 10, 35, 60, 85, 110, 135, 160, 185, 210, 235])
numpy.add.at
b = np.zeros(len(s) // N) np.add.at(b, s.index // N, s.values) b # array([ 10., 35., 60., 85., 110., 135., 160., 185., 210., 235.])
GroupBy.sum
将索引分成5组并相应地分组。
numpy.reshape
+sum
如果大小是N(或5)的倍数,则可以重塑并添加:
numpy.add.at
相关问题 更多 >
编程相关推荐