2014-05-13 82 views
0

根據熊貓數據框中的信息,我想計算一個新列。以下是我想要做的一個例子。起點:計算熊貓數據框列 - 布爾邏輯和偏移量數據

{ '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] }

這可能沒有循環通過數據框?

回答

2

如果d是您的數據框:

>>> 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.根據你需要做什麼,這可能不是必須的,因爲布爾值也是整數,因此將在整數計算中起作用。

+0

謝謝!其他問題:如果我不知道列的名稱,但知道我要根據第一列進行計算,在這種情況下,A.如何在公式中引用此列? – Jonas