将Pandas DataFrame保存到Django模型
我的股价数据存储在pandas DataFrame中,如下所示(实际上是在面板中,但是我将其转换为DataFrame)
date ticker close tsr
0 2013-03-28 abc 22.81 1.000439
1 2013-03-28 def 94.21 1.006947
2 2013-03-28 ghi 95.84 1.014180
3 2013-03-28 jkl 31.80 1.000000
4 2013-03-28 mno 32.10 1.003125
...many more rows
我想将其保存在Django模型中,该模型如下所示(与列名称匹配):
class HistoricalPrices(models.Model):
ticker = models.CharField(max_length=10)
date = models.DateField()
tsr = models.DecimalField()
close = models.DecimalField()
到目前为止,我能做的最好的就是使用它来保存它,其中df是我的DataFrame:
entries = []
for e in df.T.to_dict().values():
entries.append(HistoricalPrices(**e))
HistoricalPrices.objects.bulk_create(entries)
有没有更好的方法来保存这个?
我看过django-pandas,但是看起来它只是从数据库读取的。
-
to_sql()
与搭配使用适当的connection
参数engine
,然后在您的Django
应用程序中运行它,而不是一次遍历DataFrame
并保存一个model
实例,这将是最有效的:from django.conf import settings user = settings.DATABASES['default']['USER'] password = settings.DATABASES['default']['PASSWORD'] database_name = settings.DATABASES['default']['NAME'] database_url = 'postgresql://{user}:{password}@localhost:5432/{database_name}'.format( user=user, password=password, database_name=database_name, ) engine = create_engine(database_url, echo=False) df.to_sql(HistoricalPrices, con=engine)