如何在列上使用尾随行来计算同一列| 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' 。