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.