给定一个 Django 查询集,如下所示:
qs = A.objects.all().values_list('A', 'B', 'C', 'D', 'E', 'F')
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将我的 qs 转换为 Pandas 数据帧:
df = pd.DataFrame.from_records(qs.values('A', 'B', 'C', 'D', 'E', 'F'))
Run Code Online (Sandbox Code Playgroud)
但是,不会维护列顺序。转换后,我需要立即指定新的列顺序,但我不清楚原因:
df = df.columns['B', 'F', 'C', 'E', 'D', 'A']
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我可以做些什么不同的事情来避免显式设置数据框列?
qs.values()将 QuerySet 转换为无序的字典。您可以使用qs.values_list(),它返回一个元组列表。
尝试:
df = pd.DataFrame.from_records(
A.objects.all().values_list('A', 'B', 'C', 'D', 'E', 'F')
)
Run Code Online (Sandbox Code Playgroud)
检查有关 Django 的 QuerySets的文档
| 归档时间: |
|
| 查看次数: |
7665 次 |
| 最近记录: |