Pandas 对索引和累计数应用限制';将所有低于该限制的值

Pandas 对索引和累计数应用限制';将所有低于该限制的值,pandas,Pandas,给定一个具有数字索引的序列,形成箱子,是否有一个简单的函数来求和所有低于极限的箱子值,并将其置于序列中的该极限?假设存储单元值的间隔不均匀 例如: Input Index: Val 0.1 : 0.1 0.2 : 0.1 0.3 : 0.1 0.4 : 0.1 0.5 : 0.1 Limit = 0.3 Output 0.1 : 0 0.2 : 0 0.3 : 0.3 0.4 : 0.1 0.5 : 0.1 我最好的尝试如下,但我觉得应该有一个更简单的方法来实现这一点 将熊猫作为pd导

给定一个具有数字索引的序列,形成箱子,是否有一个简单的函数来求和所有低于极限的箱子值,并将其置于序列中的该极限?假设存储单元值的间隔不均匀

例如:

Input
Index: Val
0.1 : 0.1
0.2 : 0.1
0.3 : 0.1
0.4 : 0.1
0.5 : 0.1

Limit = 0.3


Output

0.1 : 0
0.2 : 0
0.3 : 0.3
0.4 : 0.1
0.5 : 0.1
我最好的尝试如下,但我觉得应该有一个更简单的方法来实现这一点

将熊猫作为pd导入
将numpy作为np导入
ser=pd.系列(数据=[0.1]*10,
指数=pd.FLOT64INDEX([i/10表示范围(1,11)])
lim=0.3
ser.loc[lim]=ser.loc[:lim].cumsum().iloc[-1]
ser.iloc[:np.asscalar(ser.index.get_indexer([lim]))]=0
ser
这有点简单:

ser.loc[lim] = ser.loc[:lim].sum()
ser[:ser.loc[:lim].index[-2]] = 0
如果未包含索引,请使用
get_loc()
method='nearest'
获取索引,并使用
iloc
进行索引:

lim = 0.35
ind = ser.index.get_loc(lim, method='nearest')
ser.iloc[ind] = ser.iloc[:ind+1].sum()
ser.iloc[:ind] = 0

也许我没有抓住要点,但为什么不直接使用
ser[lim]=ser[:lim].sum()
ser[:lim-1]=np.zeros(lim-1)
lim
并不总是整数,更可能是浮点。我会更新问题的。谢谢。如果lim的值不在索引中,但我想找到最接近的值,我该如何实现这一点。我猜
ser.index.get_loc(method='nearest)
可以得到最近的索引器,然后用
loc
交换
iloc