@@ -33,7 +33,7 @@ def is_values_queryset(qs):
33
33
34
34
35
35
def read_frame (qs , fieldnames = (), index_col = None , coerce_float = False ,
36
- verbose = True , datetime_index = False ):
36
+ verbose = True , datetime_index = False , column_names = None ):
37
37
"""
38
38
Returns a dataframe from a QuerySet
39
39
@@ -68,13 +68,18 @@ def read_frame(qs, fieldnames=(), index_col=None, coerce_float=False,
68
68
69
69
datetime_index: specify whether index should be converted to a
70
70
DateTimeIndex.
71
+
72
+ column_names: If not None, use to override the column names in the
73
+ DateFrame
71
74
"""
72
75
73
76
if fieldnames :
74
77
fieldnames = pd .unique (fieldnames )
75
78
if index_col is not None and index_col not in fieldnames :
76
79
# Add it to the field names if not already there
77
80
fieldnames = tuple (fieldnames ) + (index_col ,)
81
+ if column_names :
82
+ column_names = tuple (column_names ) + (index_col ,)
78
83
fields = to_fields (qs , fieldnames )
79
84
elif is_values_queryset (qs ):
80
85
if django .VERSION < (1 , 9 ): # pragma: no cover
@@ -114,8 +119,11 @@ def read_frame(qs, fieldnames=(), index_col=None, coerce_float=False,
114
119
else :
115
120
recs = list (qs .values_list (* fieldnames ))
116
121
117
- df = pd .DataFrame .from_records (recs , columns = fieldnames ,
118
- coerce_float = coerce_float )
122
+ df = pd .DataFrame .from_records (
123
+ recs ,
124
+ columns = column_names if column_names else fieldnames ,
125
+ coerce_float = coerce_float
126
+ )
119
127
120
128
if verbose :
121
129
update_with_verbose (df , fieldnames , fields )
0 commit comments