如何根据pandas中前两行中的值添加列

时间:2017-11-27 12:14:20

标签: python pandas dataframe

我有以下数据帧,需要添加第三个布尔值为0或1的值,如果前两天的price列为0.12,则列的值为1,否则为0

date            price    new_column
'2017-10-11'     0.13      0
'2017-10-12'     0.12      0
'2017-10-13'     0.12      0
'2017-10-14'     0.15      1
'2017-10-15'     0.13      0
'2017-10-16'     0.12      0
'2017-10-17'     0.12      0
'2017-10-18'     0.15      1

一个解决方案可以首先添加两个保留昨天价格和前天价格的列然后当这两个列都是0.12时new_column将是1但我正在寻找更高效,更快速的解决方案而不需要添加太多额外的列

1 个答案:

答案 0 :(得分:2)

比较shift ed列并将boolean mask投射到int

df['new'] = ((df['price'].shift(1) == 0.12) & (df['price'].shift(2) == 0.12)).astype(int)
print (df)
           date  price  new_column  new
0  '2017-10-11'   0.13           0    0
1  '2017-10-12'   0.12           0    0
2  '2017-10-13'   0.12           0    0
3  '2017-10-14'   0.15           1    1
4  '2017-10-15'   0.13           0    0
5  '2017-10-16'   0.12           0    0
6  '2017-10-17'   0.12           0    0
7  '2017-10-18'   0.15           1    1