首页 > 解决方案 > 函数没有返回正确的值(Python)

问题描述

我在下面有一个函数,它应该根据数字范围返回标准化输出:

`def incident(count):
if count['incident_ct']<= 4: 
    val = 1 
elif count['incident_ct']>4 & count['incident_ct']<= 13: # 25 to 50%
    val = 2
elif count['incident_ct'] >13 & count['incident_ct']<=31: # 50 to 75%
    val = 4
elif count['incident_ct'] >31 & count['incident_ct']<=100: # 75 to 95%
    val = 8
else: 
    val = 16
return val`

然后应用于数据中的新行:

`intersections['v_counts'] = intersections.apply(incident, axis = 1)`

但是,输出没有给出我在范围内指定的内容(v_count 中只有 1 或 2)查看我的代码时,incident_ct = 34应该是8,而incident_ct = 172应该是 16 在此处输入图像描述

标签: pythonpandasif-statement

解决方案


让我们尝试使用pd.cut

pd.cut(intersections['incident_ct'],bins=[4,13,31,100,..],labels=[1,2,4,8,16])

修复你的代码

def incident(count):
...     if count['incident_ct']<= 4:
...         val = 1
...     elif count['incident_ct']>4 and count['incident_ct']<= 13: # 25 to 50%
...         val = 2
...     elif count['incident_ct'] >13 and count['incident_ct']<=31: # 50 to 75%
...         val = 4
...     elif count['incident_ct'] >31 and count['incident_ct']<=100: # 75 to 95%
...         val = 8
...     else:
...         val = 16
...     return val

推荐阅读