【发布时间】:2019-03-03 17:32:20
【问题描述】:
我有一个数据框:
`exp_no` 'time' 'price'
1 0:00:00 20.0
1 7 days 45.0
1 15 days 100.0
2 0:00:00 20.0
2 7 days 45.0
2 15 days 100.0
对应的Django模型:
class StData(models.Model):
exp_no = models.ForeignKey(StIndex, on_delete=models.CASCADE)
time = models.DateTimeField()
price = models.DecimalField(max_digits=10, decimal_places=2)
我想制作一个较小的表,其中包含 exp_no、max_time 和相应的价格:
`exp_no` 'time' 'price'
1 15 days 100.0
2 15 days 100.0
在熊猫中,我会做df.groupby('exp_no')['time', 'price'].max().reset_index()
获取所需的表。
如果我这样做,在 Django ORM 注释中获得相同的结果(或查询集):
qs.values('exp_no').annotate(max_time=Max('time')).order_by()
它给了我exp_no和时间,但我也想得到相应的价格。我在 SO 中查看了这个答案:Django orm get latest for each group
但不确定我是如何得到价格的。将 Django 2.0 与 sqlite3 一起使用。
感谢您的帮助。
【问题讨论】: