数值数据的条件表达式 - Python/Django
Conditional expressions on numerical data - Python/Django
让我给你展示一个这样的情况:
data = [Station.objects
.filter(nr=form.cleaned_data['station'])
.aggregate(avg=Avg('residual'),
stdev=StdDev('residual'),
number=Count('residual'),
good_observations = Count(Case(When(abs('residual')<250))),
outliers=Count(Case(When(abs('residual')>=250))),
)]
我想计算数据库中 "residual"(浮点值)小于或大于 250 的行数,但它不起作用。
首先:我有 TypeEror:
init() takes either a Q object or lookups as keyword arguments
其次:
abs() 函数由于 TypeError 和字符串值作为输入而无法工作。
我希望你们中的一些人能帮助我解决这个问题:)
如错误消息中所述,When
的 __init__
采用关键字参数或 Q
objects,非常类似于 QuerySet.filter
。您可以使用 Q
对象模仿 abs
:
When(Q(residual__lt=250) & Q(residual__gt=-250)) # -250 < residual < 250
When(Q(residual__gte=250) | Q(residual__lte=-250)) # other cases
让我给你展示一个这样的情况:
data = [Station.objects
.filter(nr=form.cleaned_data['station'])
.aggregate(avg=Avg('residual'),
stdev=StdDev('residual'),
number=Count('residual'),
good_observations = Count(Case(When(abs('residual')<250))),
outliers=Count(Case(When(abs('residual')>=250))),
)]
我想计算数据库中 "residual"(浮点值)小于或大于 250 的行数,但它不起作用。
首先:我有 TypeEror:
init() takes either a Q object or lookups as keyword arguments
其次:
abs() 函数由于 TypeError 和字符串值作为输入而无法工作。
我希望你们中的一些人能帮助我解决这个问题:)
如错误消息中所述,When
的 __init__
采用关键字参数或 Q
objects,非常类似于 QuerySet.filter
。您可以使用 Q
对象模仿 abs
:
When(Q(residual__lt=250) & Q(residual__gt=-250)) # -250 < residual < 250
When(Q(residual__gte=250) | Q(residual__lte=-250)) # other cases