【问题标题】:How to transform a prefetch_related query into dataframe using panda如何使用 panda 将 prefetch_related 查询转换为数据框
【发布时间】:2019-09-30 14:11:07
【问题描述】:

我只想将 prefetch_related 查询转换为 Panda 数据框,其中包含来自以下两个模型的所有信息。这应该很简单,但不知何故没有任何作用。我使用下面的代码得到“未定义 Capture_set”。 有什么想法吗?

class Capture(models.Model):
  species_name = models.CharField(max_length=50)
  total_capture = models.IntegerField()



class Species(models.Model):
  species_name = models.ForeignKey(Capture, on_delete=models.DO_NOTHING)
  length = models.IntegerField()
  weight = models.IntegerField()


data = pd.DataFrame(list(Species.objects.all().prefetch_related(Capture_set)))

【问题讨论】:

  • 它应该读取数据帧,而不是数据库。对不起。
  • Capture_set is not defined 听起来您还没有定义变量Capture_set...而且您发布的代码中似乎没有这样的定义。你期望Capture_set 包含什么?你在哪里定义它?
  • 根据其他示例 (stackoverflow.com/questions/9176430/…),我认为这就是您应该使用 prefetch_related 的方式。但即使简单地使用 capture 而不是 capture_set 我仍然是一个错误(类型对象'Capture'没有属性'split')

标签: django pandas


【解决方案1】:

我知道这不是您要寻找的方式,但是您可以使用 values() 来实现。假设您的 related name 是“捕获”

import pandas


query = Species.objects.all().values('captures__pk', 'captures__species_name',
                                     'captures__total_capture', 'pk', 'length',
                                     'weight')
data = pandas.DataFrame.from_records(query)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2019-09-23
    • 2019-05-17
    • 2019-05-30
    • 1970-01-01
    相关资源
    最近更新 更多