gpt4 book ai didi

python - 按周分组,填充 'missing'周

转载 作者:太空狗 更新时间:2023-10-29 21:06:08 25 4
gpt4 key购买 nike

在我的 Django 模型中,我有一个非常简单的模型,它表示事件的单次发生(例如发生服务器警报):

class EventOccurrence:
event = models.ForeignKey(Event)
time = models.DateTimeField()

我的最终目标是生成一个表格或图表,显示过去 n 周内事件发生的次数。

所以我的问题分为两部分:

  • 如何group_by时间字段的星期?
  • 如何“填充”此 group_by 的结果,以便为任何缺失的周添加零值?

例如,对于第二部分,我想转换这样的结果:

| week | count |                   | week | count |
| 2 | 3 | | 2 | 3 |
| 3 | 5 | —— becomes —> | 3 | 5 |
| 5 | 1 | | 4 | 0 |
| 5 | 1 |

在 Django 中执行此操作的最佳方法是什么?一般的 Python 解决方案也可以。

最佳答案

Django 的DateFielddatetime 不支持week 属性。要在一个查询中获取所有内容,您需要执行以下操作:

from django.db import connection

cursor = connection.cursor()
cursor.execute(" SELECT WEEK(`time`) AS 'week', COUNT(*) AS 'count' FROM %s GROUP BY WEEK(`time`) ORDER BY WEEK(`time`)" % EventOccurrence._meta.db_table, [])

data = []
results = cursor.fetchall()
for i, row in enumerate(results[:-1]):
data.append(row)

week = row[0] + 1
next_week = results[i+1][0]
while week < next_week:
data.append( (week, 0) )
week += 1
data.append( results[-1] )

print data

关于python - 按周分组,填充 'missing'周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com