如何在列上使用尾随行来计算同一列| pandasPython

我想弄清楚如何比较列的前一行的元素与pandasDataFrame中当前行上的不同列。 例如:

data = pd.DataFrame({'a':['1','1','1','1','1'],'b':['0','0','1','0','0']}) 

输出:

  ab 0 1 0 1 1 0 2 1 1 3 1 0 4 1 0 

现在我想创build一个新的列,询问是否(data ['a'] + data ['b'])大于同一列的前一个值。 从理论上讲:

 data['c'] = np.where(data['a']==( the previous row value of data['a'] ),min((data['b']+( the previous row value of data['c'] )),1),data['b']) 

所以我可以理论上输出:

  abc 0 1 0 0 1 1 0 0 2 1 1 1 3 1 0 1 4 1 0 1 

我想知道如何做到这一点,因为我试图重新创build这个excel条件语句:= IF(A70 = A69,MIN((P70 + Q69),1),P70)

其中数据['a'] =列A和数据['b'] =列P.

如果有人有任何想法如何做到这一点,我将不胜感激您的意见。

根据你的陈述: '询问(数据['a'] + data ['b'])是否大于同一列的前一个值的新列“我可以build议你这样解决:

 >>> import pandas as pd >>> import numpy as np >>> df = pd.DataFrame({'a':['1','1','1','1','1'],'b':['0','0','1','0','3']}) >>> df ab 0 1 0 1 1 0 2 1 1 3 1 0 4 1 3 >>> df['c'] = np.where(df['a']+df['b'] > df['a'].shift(1)+df['b'].shift(1), 1, 0) >>> df abc 0 1 0 0 1 1 0 0 2 1 1 1 3 1 0 0 4 1 3 1 

但它不寻找“同一列的前值” 。 如果你试图在np.where()写入df['c'].shift(1) np.where() ,就会引发KeyError:'c'