在特定条件下填充 pandas 数据框列

Filling pandas data frame column under certain condition

我有以下数据框,索引为日期时间戳,我想在 p2>p1 将 p3('new column') 设置为 1 时创建一个额外的列,否则将其设置为 0。我不想循环。我尝试使用面具,但我没有正确使用:

                             p1   p2
2018-01-15 07:15:00         -1.0  0.4
2018-01-15 07:30:00         -1.0  0.4
2018-01-15 07:45:00         -3.0  0.4
2018-01-15 08:00:00         -3.0  0.3
2018-01-15 08:15:00         -2.0  0.3
2018-01-15 08:30:00         -2.0  0.3
2018-01-15 08:45:00         -2.0  0.2
2018-01-15 09:00:00         -2.7  0.1
2018-01-15 09:15:00         -2.7  0.0
2018-01-15 09:30:00         -2.7  0.0
2018-01-15 09:45:00         -3.7  0.3
2018-01-15 10:00:00         -3.0  0.3
2018-01-15 10:15:00         -2.0  0.3
2018-01-15 10:30:00         -1.0  0.3

您可以将布尔掩码转换为整数,True 转换为 1False 转换为 0

df['p3'] = (df.p2>df.p1).astype(int)
print (df)
                      p1   p2  p3
2018-01-15 07:15:00  1.0  0.4   0 <-changed first value in p1
2018-01-15 07:30:00 -1.0  0.4   1
2018-01-15 07:45:00 -3.0  0.4   1
2018-01-15 08:00:00 -3.0  0.3   1
2018-01-15 08:15:00 -2.0  0.3   1
2018-01-15 08:30:00 -2.0  0.3   1
2018-01-15 08:45:00 -2.0  0.2   1
2018-01-15 09:00:00 -2.7  0.1   1
2018-01-15 09:15:00 -2.7  0.0   1
2018-01-15 09:30:00 -2.7  0.0   1
2018-01-15 09:45:00 -3.7  0.3   1
2018-01-15 10:00:00 -3.0  0.3   1
2018-01-15 10:15:00 -2.0  0.3   1
2018-01-15 10:30:00 -1.0  0.3   1