Debug: django model querysets-> pandas.Dataframe
2017-12-01 22:42
701 查看
问题描述
在使用Django 的ORM model时,有时需要将数据导出并转变成pandas DataFrame。正常的流程应该是:import pandas as pd from model import testeModel data = testModel.objects.values() # .values()返回的是[object1,object2] df = pd.DataFrame(data)
但是系统一直会报错,出错信息如下:
Traceback (most recent call last) /usr/local/lib/python3.4/dist-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy) copy=False) else: raise ValueError('DataFrame constructor not properly called!') ValueError: DataFrame constructor not properly called!
解决方案
虽然报的是值错误,很容易让人以为是data数据错误。更隐晦的是即时数值格式都正确,还是会报上述错误,调试后发现这个ValueError错误指的是传入的data数据的格式。一直以为是list(例如[{‘name’:’hello’},{‘name’:’world’}]),毕竟print出来就是这个样子,其实testModel.objects.values()返回的实际类型是:
<class 'django.db.models.query.ValuesQuerySet'>
而这个ValuesQuerySet也支持python的for…in…遍历操作,这就是很容易遗漏的地方。知道后简单的格式转换就可以解决:
import pandas as pd from model import testeModel # success data = testModel.objects.values() df = pd.DataFrame(list(data))
相关文章推荐
- 无法将类型“System.Data.Entity.Infrastructure.DbQuery<TZM.TROA.Model.RoleInfo>”转换为“System.Collections.Gene
- 用python做数据分析4|pandas库介绍之DataFrame基本操作
- pandas dataframe 做机器学习训练数据=》直接使用iloc或者as_matrix即可
- python 取出 Mongdb 中的数据 转化成DataFrame 然后用pandas处理数据
- Pandas将列表(List)转换为数据框(Dataframe)
- pandas 取出dataframe中重复的数据(关于某字段),即去掉不重复的数据
- machine learning in coding(python):pandas数据包DataFrame数据结构简介
- django book querysets
- 使用sqlalchemy包将pandas的DataFrame数据写入MySQL数据库
- 【python学习笔记】删除pandas DataFrame的某一/几列:
- python之pandas&&DataFrame(二)
- pandas.DataFrame 增删改查详细操作
- pandas.DataFrame遍历
- python在pandas.DataFrame添加一行
- python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
- pandas中DataFrame关于显示值省略的解决方法
- pandas.DataFrame.unstack
- pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换
- pandas—DataFrame算数运算和数据对齐
- 将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy