计算Pandas数据帧列 - 布尔逻辑和偏移数据

时间:2014-05-13 18:28:19

标签: python pandas boolean-logic

根据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}}

这可能不通过数据帧循环吗?

1 个答案:

答案 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.取决于您需要什么这样做可能没有必要,因为布尔值也是整数,因此可以在整数计算中使用。

相关问题