在最近的大熊猫中,索引将保存在数据库中(您以前必须reset_index
先保存)。
import sqlite3
# Create your connection.
cnx = sqlite3.connect(':memory:')
注意:您还可以在此处传递sqlAlchemy引擎(请参见答案结尾)。
我们可以保存price2
到cnx
:
price2.to_sql(name='price2', con=cnx)
我们可以通过read_sql
以下方式检索:
p2 = pd.read_sql('select * from price2', cnx)
但是,存储(和检索)的 不是Timestamp
。要转换回我们开始使用的内容,可以使用pd.to_datetime
:
p2.Date = pd.to_datetime(p2.Date)
p = p2.set_index('Date')
我们返回与以下相同的DataFrame prices
:
In [11]: p2
Out[11]:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1006 entries, 2009-01-02 00:00:00 to 2012-12-31 00:00:00
Data columns:
AAPL 1006 non-null values
GE 1006 non-null values
dtypes: float64(2)
您还可以使用SQLAlchemy引擎:
from sqlalchemy import create_engine
e = create_engine('sqlite://') # pass your db url
price2.to_sql(name='price2', con=cnx)
这使您可以使用read_sql_table
(只能与sqlAlchemy一起使用):
pd.read_sql_table(table_name='price2', con=e)
# Date AAPL GE
# 0 2009-01-02 89.95 14.76
# 1 2009-01-05 93.75 14.38
# 2 2009-01-06 92.20 14.58
# 3 2009-01-07 90.21 13.93
# 4 2009-01-08 91.88 13.95