我有一个名为value
的df,大小为567,它有一个列index
,如下所示:
index
96.875
96.6796875
96.58203125
96.38671875
95.80078125
94.7265625
94.62890625
94.3359375
58.88671875
58.7890625
58.69140625
58.59375
58.49609375
58.3984375
58.30078125
58.203125
我还有两个附加变量:
mu
=56.80877955613938
sigma
=17.78935620293665
我想要的是检查index
列中的值。如果该值大于,例如,mu+3*sigma
,则必须将名为alarm
的新列添加到value
df中,并且必须添加值4
我试过:
for i in value['index']:
if (i >= mu+3*sigma):
value['alarm'] = 4
elif ((i < mu+3*sigma) and (i >= mu+2*sigma)):
value['alarm'] = 3
elif((i < mu+2*sigma) and (i >= mu+sigma)):
value['alarm'] = 2
elif ((i < mu+sigma) and (i >= mu)):
value['alarm'] = 1
但是它创建了一个alarm
列,并用1完全填充它
我在这里犯了什么错误
预期输出:
index alarm
96.875 3
96.6796875 3
96.58203125 3
96.38671875 3
95.80078125 3
94.7265625 3
94.62890625 3
94.3359375 3
58.88671875 1
58.7890625 1
58.69140625 1
58.59375 1
58.49609375 1
58.3984375 1
58.30078125 1
58.203125 1
如果您有多个条件,则不希望在数据帧中循环并使用} 定义条件并根据这些条件定义选项:
if, elif, else
。更好的解决方案是使用^{如果您有10分钟的时间,here'sCS95将提供一篇很好的帖子,解释为什么在数据帧上循环是一种不好的做法
相关问题 更多 >
编程相关推荐