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

时间:2018-01-11 14:14:20

标签: python pandas dataframe where mask

我有以下数据框,索引作为日期时间戳,我想创建一个额外的列,当p2> p1将p3('新列')设置为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

1 个答案:

答案 0 :(得分:4)

您可以将布尔值掩码转换为整数,将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