我使用pandas.io.sql.read_frame
:直接从数据库读取data_frame
cnx = pandas.io.sql.connect(host='srv',user='me',password='pw',database='db')
df = pandas.io.sql.read_frame('sql_query',cnx)
它可以很好地检索数据。但我想将其中一列解析为datetime64
,类似于从CSV文件读取时可以执行的操作,例如:
df2 = pandas.io.read_csv(csv_file, parse_dates=[0])
但是对于read_frame
没有parse_dates
标志。建议采用哪种替代方法?
同样的问题也适用于read_csv中的index_col
,它指示哪个col.应该是索引。有没有推荐使用read_frame的方法?
这个问题现在已经很老了。熊猫0.10也很老。在pandas 0.16的最新版本中,read_frame方法被降级为read_sql。即便如此,文档中说,就像read_csv函数一样,它采用parse_dates参数Pandas 0.16 read_frame
parse_dates参数似乎出现在0.14中,同时read_frame被取消了条件。read_sql函数似乎是对read_frame的重命名,因此只要将pandas版本更新到0.14或更高版本并重命名函数,就可以访问此参数。这是read_sql函数的文档:Pandas 0.16 read_sql
data_frame["column"] = pandas.to_datetime(data_frame["column"])
默认情况下应该工作,但如果不工作,则可以指定选项。请参阅文档。
df = pandas.io.sql.read_frame('sql_query', index=['date_column_name'], con=cnx)
其中date_column_name
是数据库中包含日期元素的列的名称。sql_query
的形式应该是select date_column_name, data_column_name from ...
如果它类似于日期字符串,Pandas(0.13+(将自动将其解析为日期格式。
In [34]: df.index
Out[34]:
<class 'pandas.tseries.index.DatetimeIndex'>