Django Aggregate Query中的Pandas

时间:2018-07-18 03:18:22

标签: django pandas

如何将汇总qs转换为DataFrame?

for i in a:
    qs = Cashflow.objects.filter ( acct = i.id ).aggregate(Min('month'), Max('month'), Avg('value'), Count('month'))

    df = pd.DataFrame.from_records ( qs )

我收到此错误:

If using all scalar values, you must pass an index

谢谢。

1 个答案:

答案 0 :(得分:0)

我有这个做我需要的事。

for i in accounts:

    qs = Cashflow.objects.filter ( id = i.id ).aggregate(Min('month'), Max('month'), Avg('value'), Count('month'))

    temp = pd.DataFrame.from_dict ( [qs] )

    temp [ 'id' ] = i.id
    temp = temp.set_index ( 'id' )

    df = df.append ( temp )

df = df.reset_index()

结果:

     id  month__count  month__max  month__min     value__avg
0    11            34  2016-04-30  2013-07-31         326329
1    32            19  2016-04-30  2014-10-31         258317

也许有更好的方法?

我希望这会有所帮助。