根据Pandas Dataframe中的信息,我想计算一个新列。以下是我想做的一个例子。起点:
{' A':[1,1,0,0,1,1,0,0,0}}
根据这些数据,我想通过使用以下逻辑计算新的列B:IF(A(行-2)= 1和A(行-1)= 1)然后B(行)= 1 ELSE B(行)= 0.我想得到这个结果:
{' A':[1,1,0,0,1,1,0,0,0],' B':[0,0,1,0 ,0,0,1,0,0}}
这可能不通过数据帧循环吗?
答案 0 :(得分:2)
如果d
是您的DataFrame:
>>> d['B'] = ((d.A.shift(2)==1) & (d.A.shift(1)==1)).astype(int)
>>> d
A B
0 1 0
1 1 0
2 0 1
3 0 0
4 1 0
5 1 0
6 0 1
7 0 0
8 0 0
shift
是向前或向后移动列的方法,允许您比较不同行中的值。带有&
的带括号的表达式返回您想要的结果,但是返回为布尔值(True和False)而不是1和0,因此我使用.astype(int)
将它们转换为1和0.取决于您需要什么这样做可能没有必要,因为布尔值也是整数,因此可以在整数计算中使用。