假设我有这个系列:
>>> s = pd.Series({1:10,2:5,3:8,4:12,5:7,6:3})
>>> s
1 10
2 5
3 8
4 12
5 7
6 3
我想对索引大于 X 的所有值求和。例如,如果X = 3,我想得到这个:
>>> X = 3
>>> s.some_magic(X)
1 10
2 5
3 8
>3 22
我设法以这种相当笨拙的方式做到了:
lt = s[s.index.values <= 3]
gt = s[s.index.values > 3]
gt_s = pd.Series({'>3':sum(gt)})
lt.append(gt_s)
并得到了预期的结果,但我相信应该有一种更简单、更优雅的方法……或者有吗?
请您参考如下方法:
s.groupby(np.where(s.index > 3, '>3', s.index)).sum()
或者,
s.groupby(s.index.to_series().mask(s.index > 3, '>3')).sum()
Out:
1 10
2 5
3 8
>3 22
dtype: int64
