计算列中的间隔

时间:2018-08-15 23:05:06

标签: python pandas numpy intervals

我在数据框(a和b)中有两列。注意:我仅在此处显示序列,但假装我是从具有已知行索引(iloc)的数据框中提取这些序列。

我正在尝试从B列中提取一些数字,并将intervalls计算为一个新的序列,然后使用它对a列进行一些操作。

时间间隔如下:

b[2]-b[1] 
b[3]-b[2] 
b[4]-b[3]

我有一个有效的代码,但是它有点丑陋,但是有点笨重。我觉得有一个功能可以做到这一点。

基本上,我正在创建一个空数组,然后在所需范围内进行迭代以计算间隔。有更好的方法进行吗?

a = pd.Series(data=[10, 11, 12, 13, 14, 15], name='a')
b = pd.Series(data=[2,3,5,8,12,17], name='b')

ar = np.array([])

for i in range(1,4): 
    temp = b[i+1] - b[i]
    ar = np.append(ar, temp)

Result = a.iloc[2:5] * ar

我在这里使用数字,但是我的实际目的是使用时间戳数据来实现。我需要row [i + 1]和row [i]之间的时间增量,然后,我需要执行一些操作。这就是为什么我要计算这些间隔。我只是忽略了时间戳,以使其更易于阅读和理解。

1 个答案:

答案 0 :(得分:2)

IIUC,使用diff()并切片任意范围

b.diff()[2:5] * a[2:5]

@sacul在评论中建议,也可以只切一次然后放下b.diff()[2:5].mul(a).dropna(),即使这意味着会生成大量的NaN,对于大的df来说,这可能不是有益的