我有以下数据框,索引作为日期时间戳,我想创建一个额外的列,当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
答案 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