特定条件下填充 pandas dataframe 列

我将索引作为日期时间戳记的 dataframe 设置为以下,我想在p2&p; 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转换为1,将False转换为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