我的数据框看起来像这样(但更长):
OnsetTime OffsetTime OnSec OffSec RTsec TrialDur
36163 38165 36.163 38.165 0.000 2.002
39157 41152 39.157 41.152 0.605 1.995
42152 44155 42.152 44.155 0.509 2.003
45164 47153 45.164 47.153 0.503 1.989
48159 50161 48.159 50.161 0.558 2.002
我想创建一个新列,对于每一行,在上面的TrialDur列中添加值但不包括它。因为TrialDur是试用期,所以需要加上.001秒,我希望我的新专栏能够指出屏幕上出现新刺激的时间。所以它看起来像这样:
NewVar
0
2.003
3.999
6.003
7.993
9.996
第一行将是0,因为第一次刺激在时间点0开始。第二次是在第一次试验结束后(基于TrialDur变量),在2.003秒,依此类推。
如何在每行中创建一个在其上方添加值的变量?
答案 0 :(得分:2)
您可以使用cumsum
计算累积总和(在此之前加0.001),然后shift
该列加1,最后将第一行设置为0.
df['NewVar'] = (df.TrialDur + 0.001).cumsum()
df.loc[df.index[-1]+1, 'NewVar'] = 0
df['NewVar'] = df.NewVar.shift(1)
df.loc[0, 'NewVar'] = 0
因为NewVar
还有一行,所以我首先在末尾添加一个空行,并假设索引是按数字顺序排列的。