如何使用列上的尾随行对同一列进行计算

2024-09-27 00:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出如何将列的前一行的元素与数据帧中当前行的不同列进行比较。例如:

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

输出:

   a   b
0  1   0
1  1   0
2  1   1
3  1   0
4  1   0

现在我想创建一个新列,询问(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'])

所以理论上我可以输出:

   a   b   c
0  1   0   0
1  1   0   0
2  1   1   1
3  1   0   1
4  1   0   1

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

其中data['a']=a列,data['b']=p列

如果有人对如何做到这一点有任何想法,我将非常感谢你的建议。你知道吗


Tags: ofthe数据元素dataframedatavaluenp
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:11

根据您的陈述:'询问(data['a']+data['b'])是否大于同一列的先前值的新列'我可以建议您通过以下方式解决:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'a':['1','1','1','1','1'],'b':['0','0','1','0','3']})
>>> df
   a  b
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
   a  b  c
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),它将引发KeyError:'c'。你知道吗

相关问题 更多 >

    热门问题