我有一个数据框:
`exp_no` 'time' 'price'
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
对应的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)
Run Code Online (Sandbox Code Playgroud)
我想制作一个较小的表,其中包含 exp_no、max_time 和相应的价格,如下所示:
`exp_no` 'time' 'price'
Run Code Online (Sandbox Code Playgroud)
1 15 days 100.0
2 15 days 100.0
Run Code Online (Sandbox Code Playgroud)
在 pandas 中,我会df.groupby('exp_no')['time', 'price'].max().reset_index()
做得到想要的表。
在 Django ORM 注释中,如果我这样做,可以获得相同的结果(或查询集):
qs.values('exp_no').annotate(max_time=Max('time')).order_by()
Run Code Online (Sandbox Code Playgroud)
它给了我exp_no和时间,但我也想得到相应的价格。我已经在SO中查看了这个答案:Django orm getlatest for every group
但不知道如何得到价格。将 Django 2.0 与 sqlite3 结合使用。
我很感激任何帮助。