7

我正在使用以下data_frame方法直接从数据库中读取pandas.io.sql.read_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])

但是没有parse_dates标志read_frame。推荐什么替代方法?

同样的问题适用于index_colin read_csv,它指示哪个列。应该是索引。有没有推荐的方法来使用 read_frame 做到这一点?

4

3 回答 3

2

这个问题现在已经很老了。pandas 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

于 2015-04-15T07:58:06.143 回答
1
data_frame["column"] = pandas.to_datetime(data_frame["column"])

默认情况下应该可以工作,但如果没有,您可以指定选项。请参阅文档

于 2014-04-10T16:28:57.627 回答
0
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'>
于 2014-01-21T08:13:12.783 回答