python pandas-在你所在的行上方添加一列的值

时间:2015-07-13 16:28:38

标签: python pandas

我的数据框看起来像这样(但更长):

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秒,依此类推。

如何在每行中创建一个在其上方添加值的变量?

1 个答案:

答案 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还有一行,所以我首先在末尾添加一个空行,并假设索引是按数字顺序排列的。