Py学习  »  Django

Django分组并按权重聚合

Saturnix • 4 年前 • 766 次点击  

我有一个这样的表,我使用Django ORM与之交互。

date                car_crashes         city
01.01               1                   Washington
01.02               4                   Washington
01.03               0                   Washington
01.04               2                   Washington
01.05               0                   Washington
01.06               3                   Washington
01.07               4                   Washington
01.08               1                   Washington
01.01               0                   Detroit
01.02               2                   Detroit
01.03               4                   Detroit
01.04               2                   Detroit
01.05               0                   Detroit
01.06               3                   Detroit
01.07               1                   Detroit

我想知道全国每天发生多少起车祸,我可以这样做:

Model.values("date") \
.annotate(car_crashes=Sum('car_crashes')) \
.values("date", "car_crashes")

date  car_crashes
1.01            1
1.02            6
1.03            4
1.04            4
1.05            0
1.06            6
1.07            5
1.08            1

现在,假设我有一个这样的数组:

weights = [
    {
        "city": "Washington",
        "weight": 1,
    },
    {
        "city": "Detroit",
        "weight": 2,
    }
]

这意味着底特律的车祸应该乘以2再与华盛顿的相合。

我的解决方案是分别聚合所有不同的权重,用Pandas或SQL乘以权重,然后进行聚合。这将是低效和缓慢的(很多查询充其量,使用熊猫充其量)。

可以用一个ORM查询还是一个SQL查询来实现?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50703
 
766 次点击  
文章 [ 1 ]  |  最新文章 4 年前