2017-06-12 34 views
1

查詢集如下所示:轉換Django的查詢集到大熊貓數據幀和維護列順序

qs = A.objects.all().values_list('A', 'B', 'C', 'D', 'E', 'F') 

我可以在我的QS轉換爲大熊貓數據幀容易:

df = pd.DataFrame.from_records(qs.values('A', 'B', 'C', 'D', 'E', 'F')) 

但是,列訂單不被維護。轉換後,我立即需要指定列的新秩序,我不明白爲什麼:

df = df.columns['B', 'F', 'C', 'E', 'D', 'A'] 

爲什麼會這樣,我能做些什麼不同,以避免明確設置數據框列?

回答

1

qs.values()將QuerySet轉換爲無序的字典。您可以使用qs.values_list(),它返回元組列表。

嘗試:

df = pd.DataFrame.from_records(
    A.objects.all().values_list('A', 'B', 'C', 'D', 'E', 'F') 
) 

檢查docs約Django的查詢集

1

嘗試:

df = pd.DataFrame.from_records("DATA_GOES_HERE", columns=['A','B','C'.. etc.) 

我使用columns=參數found here

我相信你也可以通過使用pd.DataFrame來構造DataFrame,並將你的列表與相應的列名放在那裏。這可能是更多的人工前期工作,但如果這是自動化工作,它也可以工作。 (可能再次遇到此問題,但可以通過重新安排列來輕鬆解決問題。再次,可能會提前做更多工作)