for rows in capacity1:
if capacity1['value'] <80 & (capacity1['metric']=='ENT_CORE','UTIL_CPU','ENT_CPU')).item():
capacity1['root_cause']="CPU"
elif capacity1['value']<80 & (capacity1['metric']=='FS_CACHE','FREE','PINNED','PAGE_OUT','PAGE_SPACE')).item():
capacity1['root_cause']="MEMORY"
elif capacity['value']<80 & (capacity1['metric']=='REC_BYTES','TRANS_BYTES','REC_BYTESS','TRANS_BYTESS')).item():
capacity1['root_cause']="NETWORK"
else:
capacity1['root_cause']= "OTHER"
错误:ValueError:只能将大小为1的数组转换为Python 标量\
无法修复此错误。
要求:基于价值&amp;我需要指定根本原因。
答案 0 :(得分:0)
使用numpy.select
为m1
等变量指定重复条件,以获得更好的效果:
m1 = capacity1['value'] < 80
m2 = capacity1['metric'].isin(['ENT_CORE','UTIL_CPU','ENT_CPU'])
m3 = capacity1['metric'].isin(['FS_CACHE','FREE','PINNED','PAGE_OUT','PAGE_SPACE'])
m4 = capacity1['metric'].isin(['REC_BYTES','TRANS_BYTES','REC_BYTESS','TRANS_BYTESS'])
condlist = [m1 & m2, m1 & m3, m1 & m4]
choicelist = ["CPU", "MEMORY", "NETWORK"]
capacity1['root_cause'] = np.select(condlist, choicelist, default="OTHER")