Converting Django QuerySet to pandas DataFrame Ask Question

Converting Django QuerySet to pandas DataFrame Ask Question

I am going to convert a Django QuerySet to a pandas DataFrame as follows:

qs = SomeModel.objects.select_related().filter(date__year=2012)
q = qs.values('date', 'OtherField')
df = pd.DataFrame.from_records(q)

It works, but is there a more efficient way?

ベストアンサー1

import pandas as pd
import datetime
from myapp.models import BlogPost

df = pd.DataFrame(list(BlogPost.objects.all().values()))
df = pd.DataFrame(
    list(
        BlogPost.objects.filter(
            date__gte=datetime.datetime(2012, 5, 1)
        ).values()
    )
)

# limit which fields
df = pd.DataFrame(
    list(
        BlogPost.objects.all().values(
            "author", "date", "slug"
        )
    )
)

The above is how I do the same thing. The most useful addition is specifying which fields you are interested in. If it's only a subset of the available fields you are interested in, then this would give a performance boost I imagine.

おすすめ記事