小编典典

更多Pythonic / Pandaic方法遍历熊猫系列

python

这很可能是非常基本的东西,但是我无法弄清楚。假设我有一个像这样的系列:

s1 = pd.Series([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])

如何在该系列子系列上进行操作而不必恢复使用for循环?

例如,假设我要将其转换为包含四个元素的新系列。此新系列中的第一个元素是原始系列中前三个元素(1、1、1)的总和,第二个是后三个元素(2、2、2)的总和,依此类推:

s2 = pd.Series([3, 6, 9, 12])

我怎样才能做到这一点?


阅读 217

收藏
2021-01-20

共1个答案

小编典典

您可以使用numpy重塑系列s1,然后对诸如以下的行求和:

np.sum(np.array(s1).reshape(len(s1)/3,3), axis = 1)

导致

array([ 3,  6,  9, 12], dtype=int64)

编辑:正如MSeifert在他的评论中提到的,您还可以让numpy计算长度,例如:

np.sum(np.array(s1).reshape(-1, 3), axis=1)
2021-01-20