Python 如何对索引大于X的所有值求和?

Python 如何对索引大于X的所有值求和?,python,pandas,Python,Pandas,假设我有这个系列: >>> 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 我用了一种

假设我有这个系列:

>>> 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)

并得到了预期的结果,但我相信应该有一个更简单、更优雅的方法。。。还是有?

这里有一个可能的解决方案:

import pandas as pd

s = pd.Series({1: 10, 2: 5, 3: 8, 4: 12, 5: 7, 6: 3})
iv = s.index.values

print s[iv <= 3].append(pd.Series({'>3': s[iv > 3].sum()}))

下面是一个可能的解决方案:

import pandas as pd

s = pd.Series({1: 10, 2: 5, 3: 8, 4: 12, 5: 7, 6: 3})
iv = s.index.values

print s[iv <= 3].append(pd.Series({'>3': s[iv > 3].sum()}))
或者

或者


你只需要做s.loc[4:]就可以了。sumyou只需要做s.loc[4:]就可以了。SumThank,这是一种更好的求和方式,但仍然不能解决创建一个系列并“手动”添加它的笨拙部分。@soungalo啊,好的,我错过了那部分,编辑了我的回答谢谢,这是一种更好的求和方式,但是仍然不能解决创建一个系列并“手动”添加它的笨拙部分。@soungalo啊,好吧,我错过了那部分,编辑了我的答案
s.groupby(s.index.to_series().mask(s.index > 3, '>3')).sum()
Out: 
1     10
2      5
3      8
>3    22
dtype: int64