rah*_*hem 5 python arrays django pandas
我想在django模型中添加pandas dataframe(或numpy数组)作为字段.django中的每个模型实例都有一个与之关联的大尺寸2D数组,因此我想将其存储为numpy数组或pandas数据帧.
请指导我如何实现它.我在下面试过,但它不起作用.
from django.db import models
import numpy
class datafile(models.Model)
filename = models.CharField(max_length=50)
data = numpy.array((1000,1000))
Run Code Online (Sandbox Code Playgroud)
我正在从excel文件中读取数据并将其设置为views.py中的数据变量,但在保存模型后,数据的值不会更新.问候,拉胡尔
您可能想要使用PickleField来存储您的numpy或Pandas数据帧.PickleField会将数据序列化为数据库存储的文本字段,并在检索时将其转换回来.
from django.db import models
from picklefield.fields import PickledObjectField
import numpy
class DatafileModel(models.Model)
data = PickledObjectField()
Run Code Online (Sandbox Code Playgroud)
然后使用numpy或pandas对象创建或操作模型实例:
datafile = DatafileModel()
datafile.data = numpy.array((1000,1000))
datafile.save()
Run Code Online (Sandbox Code Playgroud)
为了不必单独创建模型实例,可以使用以下简单方法
import pandas as pd
from django.contrib.postgres.fields import JSONField
class StoredDataFrame(Model):
data = JSONField()
@classmethod
def putframe(cls, dataframe):
storeddataframe = cls(data=dataframe.to_json(orient='split'))
storeddataframe.save()
return storeddataframe
def loadframe(self):
return pd.read_json(self.data, orient='split')
Run Code Online (Sandbox Code Playgroud)
使用示例:
df = pd.DataFrame(np.random.randn(6,4), index=list('qwerty'), columns=list('ABCD'))
storeddata = StoredDataFrame.putframe(df)
retrieveddataframe = storeddata.loadframe()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2908 次 |
最近记录: |