python数据帧中的值错误

时间:2018-06-11 11:08:00

标签: python pandas

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;我需要指定根本原因。

1 个答案:

答案 0 :(得分:0)

使用numpy.selectm1等变量指定重复条件,以获得更好的效果:

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")