假设我们具有以下熊猫数据框:
test_df = pd.DataFrame({'start':[1,2,3,4], 'end':[2,3,4,5] ,'signal':[1,2,3,4]},columns=['start','end','signal'])
我们可以以向量化方式更新numpy数组吗?
nparray = np.zeros(4)
使用下面的计算方法吗?
def compute(nparray,start,end,signal):
nparray[start:end] += signal
现在,它出现以下错误:
nparray[start:end] += signal
TypeError: slice indices must be integers or None or have an __index__ method
答案 0 :(得分:1)
第一创建的范围,然后进行范围成为一个列表中,那么问题成为unnesting问题
df['key']=[list(range(x,y))for x , y in zip(df.start,df.end)]
unnesting(df,['key']).groupby('key').signal.sum()
key
1 1
2 2
3 3
4 4
Name: signal, dtype: int64
unnesting(df, ['key']).groupby('key').signal.sum().values
array([1, 2, 3, 4], dtype=int64)