我们是否可以使用pandas dataframe列中的值以矢量化方式在numpy数组中累积?

时间:2019-02-02 00:36:51

标签: arrays pandas numpy dataframe vectorization

假设我们具有以下熊猫数据框:

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

1 个答案:

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