我在数据框(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]之间的时间增量,然后,我需要执行一些操作。这就是为什么我要计算这些间隔。我只是忽略了时间戳,以使其更易于阅读和理解。
答案 0 :(得分:2)
IIUC,使用diff()
并切片任意范围
b.diff()[2:5] * a[2:5]
@sacul在评论中建议,也可以只切一次然后放下b.diff()[2:5].mul(a).dropna()
,即使这意味着会生成大量的NaN,对于大的df
来说,这可能不是有益的>